RocketMQ 保证消息顺序消费

本文详细介绍了如何在RocketMQ中保证消息的顺序消费。关键点包括使用同一topic和queue,单线程发送与消费,以及通过MessageQueueSelector选择发送队列。生产者需指定发送队列,消费者可选择MessageListenerOrderly确保顺序。当topic下有多个queue时,需限制消费线程数为1以保证顺序。
摘要由CSDN通过智能技术生成

目录

1、关键点

2、生产者

3、消费者


在一些业务场景下,我们希望消息被并发处理,提高处理效率;

另一些业务场景下,为了保证业务数据处理顺序,需要优先保证消息消息的消费顺序。

1、关键点

保证RocketMQ消息顺序消费的关键主要有以下几点:

  • 保证生产者消费者用同一topic

  • 保证生产者消费者用同一topic下的同一个queue(默认一个topic下有4个queue)

  • 发消息的时候用一个线程去发送消息

  • 消费的时候 只用一个线程去消费一个queue里的消息(默认MessageListenerConcurrently使用20个线程去消费处理消息

    )或者使用MessageListenerOrderly

  • 如果多个queue都有消息,只能保证每个单个queue里的消费是顺序的

2、生产者

生产端要保证使用指定topic下的指定queue,顺序消息的使用需要在producer的send()方法中添加MessageQueueSelector接口的实现类(或者使用包里已经有的实现SelectMessageQueueByHash等),并重写select选择使用的队列,因为顺序消息局部顺序,需要将所有消息指定发送到同一队列中。

package rocketmq.FIFO;

import org.apache.rocketmq.client.exception.MQBrokerException;
import 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值