RocketMQJava

RocketMQ集群消费

2022-07-13  本文已影响0人  TZX_0710

集群消费

一组consumer同时消费一个topic,可以分配消费负载均衡策略分配consumer对应消费topic下的哪些queue
多个group同时消费一个topic时,每个group都会消费到数据
一条消息只会被一个group中的consumer消费,

广播消费

消息将对一 个Consumer Group 下的各个 Consumer 实例都消费一遍。
即即使这些 Consumer 属于同一个Consumer Group ,消息也会被 Consumer Group 中的每个 Consumer 都消费一次。

消费消息时使用的是push还是pull?

在刚开始的时候就要决定使用哪种方式消费
两种:
`DefaultLitePullConsumerImpl`  拉
`DefaultMQPushConsumerImpl`推
两个实现 `DefaultLitePullConsumerImpl` `DefaultMQPushConsumerImpl`都实现了MQConsumerInner接口接口
名称上看起来是一个推,一个拉,但实际底层实现都是采用的**长轮询机制**,即拉取方式
broker端属性 longPollingEnable 标记是否开启长轮询。默认开启

为什么要主动拉取消息而不使用事件监听方式?

事件驱动方式是建立好长连接,由事件(发送数据)的方式来实时推送。
如果broker主动推送消息的话有可能push速度快,消费速度慢的情况,那么就会造成消息在consumer端堆积过多,同时又不能被其他consumer消费的情况

几种常见的消息同步机制?


push:
如果broker主动推送消息的话有可能push速度快,消费速度慢的情况,那么就会造成消息在consumer端堆积过多,同时又不能被其他consumer消费的情况
pull:
轮训时间间隔,固定值的话会造成资源浪费
长轮询:
上连接 短连接(每秒) 长轮询

DefaultMQPushConsumer.setConsumeMessageBatchMaxSize与DefaultMQPushConsumer.setPullBatchSize区别?

setConsumeMessageBatchMaxSize是指broker拉取一定数量的消息,默认32条,交付给处理逻辑的时候只有一条
consumer.setPullBatchSize指的是从broker拉取一条消息 默认10条
上一篇 下一篇

猜你喜欢

热点阅读