RocketMQ生产者与消费者

RocketMQ的Producer通过NameServer获取Topic路由信息,选择Queue发送消息,支持轮询和最小延迟算法。Consumer有两种消费模式:广播和集群,消费进度分别保存在consumer端和broker中。Rebalance机制可能导致暂停消费和重复消费,RocketMQ的Rebalance由每个Consumer自行完成,不同于Kafka的Group Coordinator。Consumer Queue分配有平均、环形平均、一致性Hash和同机房策略。
摘要由CSDN通过智能技术生成

Producer

Producer将消息发送到某Broker中的Queue中,经历如下过程

  • Producer发送消息之前,会先去NameServer拉取Topic的路由信息
  • NameServer返回该Topic信息及Broker列表

  • Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于发送消息

  • Produer对消息做一些处理,例如,消息本身超过4M,则会对其进行压缩

  • Producer向选择出的Queue所在的Broker发出RPC请求,将消息发送到选择出的Queue

Queue选择算法

对于无序消息,其Queue选择算法,也称为消息投递算法,常见的有两种

  • 1)轮询算法(默认)该算法保证了每个Queue中可以均匀的获取到消息。(缺点:由于某些原因、在某些Broker上的Queue可能投递延迟较严重。从而导致 Producer的缓存队列中出现较大的消息积压、影响消息的投递性能。)

2 最小投递延迟算法。该算法会统计每次消息投递的时间延迟,然后根据统计出的结果将消息投递到时间延迟最小的Queue。 如果延迟相同,则采用轮询算法投递。该算法可以有效提升消息的投递性能。(缺点:消息在Queue上的分配不均匀。投递延迟小的Queue其可能会存在大量 的消息。而对该Queue的消费者压力会增大、降低消息的消费能力、  可能会导致MQ中消息的堆 积。) 

Consumer

消费模

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值