1.消息消费
1.1消息队列负载
同一个消费组内的消费者共同承担其订阅主题下消息队列的消费。
分配算法:尽量使用:平均分配,平均轮询分配。
分配原则:同一个消息消费队列同一时间只会分配给同一个消费者,一个消费者可以分配多个消息消费队列。
1.2消息拉取
顺序消息的消费存在消息队列锁:
1.向broker发送锁定该消息队列的请求;
2.锁定成功创建该消息队列的拉去任务;
3.锁定失败则等待其它消费者释放该消息队列的锁。
1.3消息消费
一般需做幂等处理。
消费模式:
1.集群模式:轮询或者根据算法分配,消息只会被某一个消费者消费到,可重试。
2.广播模式:每条消息会被订阅了该消息主题的所有消费者消费,不存在重试。
2.消息确认
基于ACK确认机制。
3.消费进度管理
记录消息的消费进度。
广播模式:存储在消费者本地。
集群模式:存放在服务端broker。
问题:当消费者群组有新的消费者加入或者有消费者宕机,如何处理?
答:RebalanceService线程默认每20秒进行一次消息队列负载,根据当前消费组内消费者个数与主题队列数量按照某一种负载算法进行队列分配。