RocketMQ顺序消息

RocketMQ顺序消息包括三个部分,顺序发送,顺序存储,顺序消费。关于存储,队列天然支持顺序存储所以这里主要聊聊顺序发送和顺序消费

1、顺序发送

要保证顺序发送需要保证只有一个Producer串行发送。

但是这样如果数据量大的话会出现瓶颈。有时候我们不要求所有的数据都要有序。比如订单状态变更,我们保证某个订单按照顺序发送和消费即可。

然而,RockertMQ同一个topic会有多个队列,虽说一个队列天然有序,但是多个队列就不能保证顺序了。所以发送的时候我们要保证同一个订单消息发送到同一个队列中。

RocketMQ支持我们在发送消息的时候选择队列,代码如下

int arg = orderId;
producer.send(message
    // MessageQueueSelector
    , (list, message, arg) -> list.get(((int) arg) % list.size())
    , arg);

2、顺序消费

保证顺序消费,需要保证一个队列只能被一个consumer获取消息,并且要串行消费。

通过创建Topic时制定参数-o=true(--order),即顺序消息。

另外nameserver中的配置orderMessageEnable 和 returnOrderTopicConfigToBroker 也必须是 true

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值