前言: 在使用RockerMQ中一般都会部署为双主双从,或但主从模式。同时RocketMQ在消费时还可以选择使用不同的消费模式,但是不同的消费模式带来的业务效果也不同。
RoekctMQ在消费时支持局部同步消费,也就是在一个topic下拥有多个queue,queue之前为异步消费,但是在同一个queue中,消息为顺序消费。
@RocketMQMessageListener(nameServer = "${rocketmq.nameserver}", topic = "MAJOR", consumerGroup = "MAJOR-CONSUMER", consumeMode = ConsumeMode.ORDERLY)
public class MajorConsumer implements RocketMQListener<String> {}
上面的代码就是顺序消费的类使用注解中的consumeMode = ConsumeMode.ORDERLY
来开启顺序消费。但是顺序消费也会产生一个问题,那就是在主从模式下,一但主broker下线之后,客户端也不会从从broker消费消息。
一开始还以为是配置的问题,直到后来提出issue交流后证实,顺序消费时客户端会在queue上上锁,且只在master节点上上锁。