下面的三种模式都是在消费同一个topic的前提下才会有效的。
集群消费
集群消费模式下,相同 Consumer Group的每个Consumer实例负载均衡的接受消息,于nginx的负载均衡,一条消息只会在一个consumer消费。正常我们用的都是这种模式,如果业务量庞大,那么就可以多启动几个消费程序即可。
广播消费
广播消费模式下,相同 Consumer Group 的每个 Consumer 实例都接收全量的消息。例如说,在应用中,缓存了数据字典等配置表在内存中,可以通过 RocketMQ 广播消费,实现每个应用节点都消费消息,刷新本地内存的缓存。
分组消费
分组消费模式下,不同Consumer Group 的每个consumer实例都接收全量的消息。这种模式在某些情况下是非常有用的,比如同一条订单消息,但是该订单消息会产生多个任务,比如:送抽奖资格,计算业绩,分配物流。当然我们可以生成三条消息来消费,但是这样得保证在消息生产者处连续三条消息都得发送成功,如果我们只发送一条消息,然后用分组消费的模式来处理,那么送资格,计算几页,分配物流这三个consumer实例都可以收到消息做自己的业务逻辑,并且消费失败的情况下,就算其他实例消费成功也还是会重推的,因为消费失败也只是跟这一个consumer的消费队列有关,这样子就可以很好的解决啦。