rocketmq 顺序消费

  <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
  </dependency>

有序消息需要生产者,消费者一起配合,生产者要保证每次消息都要投递到broker的同一个队列里,消费者需要设置

关键点 生产这发送 同步消息且指定队列 syncSendOrderly
消费者指定顺序消费 consumeMode = ConsumeMode.ORDERLY

生产者

  @Resource
  private RocketMQTemplate rocketMQTemplate;

        for (int i = 0; i < 10; i++) {
            if(i%2 ==0 ){
                SendResult a =  rocketMQTemplate.syncSendOrderly(
                        springTopic, "msg"+i,"11");
                System.out.println(a.getMessageQueue());
            }else {

                SendResult a = rocketMQTemplate.syncSendOrderly(
                        springTopic, "msgaa" + i, "dsadsads");
                System.out.println(a.getMessageQueue());

            }
        }

日志

MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=0]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=3]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=0]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=3]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=0]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=3]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=0]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=3]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=0]
MessageQueue [topic=string-topic, brokerName=localhost.localdomain, queueId=3]

消费者1

@Service
@RocketMQMessageListener(topic = "${demo.rocketmq.topic}", consumerGroup = "string_consumer",consumeMode = ConsumeMode.ORDERLY)
public class StringConsumer  implements RocketMQListener<MessageExt>, RocketMQPushConsumerLifecycleListener {


    @Override
    public void onMessage(MessageExt messageExt) {
        String message = new String(messageExt.getBody());
        System.out.println("======="+message);
    }

    @Override
    public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
        defaultMQPushConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_TIMESTAMP);
        defaultMQPushConsumer.setConsumeTimestamp(UtilAll.timeMillisToHumanString3(System.currentTimeMillis()));
    }
}

消费者2

@Service
@RocketMQMessageListener(topic = "${demo.rocketmq.topic}", consumerGroup = "string_consumer",consumeMode = ConsumeMode.ORDERLY)
public class StringConsumer2 implements RocketMQListener<MessageExt>, RocketMQPushConsumerLifecycleListener {
    @Override
    public void onMessage(MessageExt messageExt) {
        String message = new String(messageExt.getBody());
        System.out.println("-----------"+message);
    }

    @Override
    public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
        defaultMQPushConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_TIMESTAMP);
        defaultMQPushConsumer.setConsumeTimestamp(UtilAll.timeMillisToHumanString3(System.currentTimeMillis()));
    }
}

结果

=======msg0
-----------msgaa1
2019-11-11 10:49:28.167  INFO 1977 --- [MessageThread_8] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D2330E0000 cost: 7 ms
2019-11-11 10:49:28.167  INFO 1977 --- [MessageThread_6] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D2331F0002 cost: 7 ms
-----------msgaa3
=======msg2
2019-11-11 10:49:28.210  INFO 1977 --- [MessageThread_8] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D233270004 cost: 0 ms
=======msg4
2019-11-11 10:49:28.210  INFO 1977 --- [MessageThread_6] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D2332B0006 cost: 0 ms
2019-11-11 10:49:28.212  INFO 1977 --- [MessageThread_8] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D233300009 cost: 0 ms
-----------msgaa5
=======msg6
2019-11-11 10:49:28.214  INFO 1977 --- [MessageThread_6] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D23334000C cost: 0 ms
-----------msgaa7
2019-11-11 10:49:28.216  INFO 1977 --- [MessageThread_6] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D2333E0010 cost: 0 ms
2019-11-11 10:49:28.216  INFO 1977 --- [MessageThread_8] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D2333A000E cost: 0 ms
-----------msgaa9
=======msg8
2019-11-11 10:49:28.217  INFO 1977 --- [MessageThread_8] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D233410012 cost: 0 ms
2019-11-11 10:49:28.217  INFO 1977 --- [MessageThread_6] a.r.s.s.DefaultRocketMQListenerContainer : consume C0A8016109CA18B4AAC235D233440014 cost: 0 ms

猜你喜欢

转载自blog.csdn.net/loveme888/article/details/103006512