- 博客(4)
- 收藏
- 关注
原创 RocketMQ保持顺序消费
RebalanceService 线程启动后,会以 20s 的频率计算每一个消费组的队列负载、当前消费者的消费队列集合(用 newAssignQueueSet 表),然后与上一次分配结果(用 oldAssignQueueSet 表示)进行对比。这时候会出现两种情况。确保同一时间只有一个消费者可以从特定的消息队列中拉取消息。
2024-10-23 19:15:18
489
1
原创 RocketMQ事务消息原理(小白学习)
发送半消息时,也是跟发送延迟消息一样,不直接发送到原来的Topic中,而是将发往特定的Topic:RMQ_SYS_TRANS_HALF_TOPIC,先将原先的Topic和队列存储在属性里,然后替换TOPIC,队列默认为0。如果是提交,则将消息的信息替换为原来的信息,发往commitLog,如果是回滚就不往commitLog里面发送,消费者不会消费到就相当于回滚了。事务开始时,Producer发送一条半消息给Broker,然后根据本地事务执行结果来决定是向Broker发送提交消息,还是发送回滚消息。
2024-10-23 16:02:30
291
原创 RocketMQ——Producer、Broker、NameSrv、Consumer关系
NameSrv每10s扫描它记录的Broker列表,看看这些Broker是否还活着。Consumer 和 Producer 一样,在启动的时候需要连接 NamerSrv,跟它建立长连接,并且从它获取 topic 和 broker 的映射关系,这样 Consumer 才能知道它想要消费的消息具体在哪个 Broker。Broker需要给集群内的每一台NameSrv都上报路由信息,因此每一台NameSrv存储的信息都是完整的,一台挂掉以后可以随机选择集群中的一台NameSrv进行长连接。
2024-10-23 13:09:55
280
原创 RocketMQ查找消息
RocketMQ是将所有消息(无论是哪个topic)都存入到commitLog中,这样就能利用硬盘的顺序写的特性,提高写入性能。
2024-10-23 10:24:04
701
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅