RocketMQ 消息消费
消息消费
难点:如何保证消息只消费一次?
顺序消费?
消费模式:
1、单一消费模式:一条消息,仅被一个消费者进行消费。
如何进行负载?负载算法有 a、平均分配。b、平均轮询分配。c、一致性hash(不推荐)。d、根据配置,为消费者指定消息队列。e、根据broker进行分配,消费者固定消费指定的Broker。
2、广播模式:一条消息被所有的消费者消费。
消息的消费:
1、一个消息队列,同时只允许一个消费者进行消息的消费。一个消费者可以消费多个消息队列。
顺序消费:
1、RocketMq 仅保证队列里面的消息顺序的消费,如果需要保证主题(topic)的顺序消费,需要将topic的的队列设置为1(默认为4),这样设置取消了队列的高性能。
与ActiveMq的对比:
1、高性能方面:存储消息的时候,使用多个队列来存储,可以并发的进行消息的消费。
2、ActiveMq消息顺序的处理方式为:任何时候,只允许一个消费者消费消息。如果有2个consumer都是这样配置的,broker只会把队列消息发送给其中一个consumer,如果这个consumer挂掉了,broker会把消息推送给另外的consumer,这样就保证了按顺序消费消息。