集群消费
一组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条