开发者社区 > 云原生 > 云消息队列 > 正文

RocketMQ5.xServer能用MessageListenerConcurrently消费吗?

请问RocketMQ 5.x Server下,我在使用remoting version sdk顺序消费时,可以使用MessageListenerConcurrently消费吗?grpc version sdk已经不区分orderly还是concurrently消费,remoting version可以这样用吗?

展开
收起
游客6poszk7nfmalm 2023-07-23 20:43:47 130 0
1 条回答
写回答
取消 提交回答
  • 在RocketMQ 5.x版本的Server中,使用remoting version SDK进行顺序消费时,不应该使用MessageListenerConcurrently接口。虽然RocketMQ remoting version SDK支持并发消费(concurrent consumption),但是在顺序消费场景下,推荐使用MessageListenerOrderly接口。

    MessageListenerOrderly接口用于处理顺序消费的消息,确保按照消息的顺序进行处理。它的实现类需要实现consumeMessageOrderly()方法,从而提供对消息的有序处理逻辑。

    以下是一个示例:

    import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly;
    import org.apache.rocketmq.common.message.MessageExt;
    
    public class MyMessageListener implements MessageListenerOrderly {
        @Override
        public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) {
            // 处理消息逻辑
            for (MessageExt msg : msgs) {
                // 按顺序处理消息
                System.out.println("Received message: " + new String(msg.getBody()));
            }
    
            return ConsumeOrderlyStatus.SUCCESS;
        }
    }
    

    在上述示例中,我们实现了MessageListenerOrderly接口,并重写了consumeMessage()方法来处理消费逻辑。通过遍历消息列表msgs,我们可以按照顺序处理每条消息。

    2023-07-28 09:51:40
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载