相当通俗易懂的RocketMQ顺序消息

其实顺序消息是业务中常用的功能之一,只要是使用MQ的,就不太可能绕的过去这个问题。就算是业务上不需要保证顺序消息,但是作为开发,作为码农,怎么着都要跟你的PM确认一下需求的啦,那肯定就会聊到MQ的顺序消息的啦!

举一个简单的例子,咱们就不说老生常谈的购物交易系统,订单系统之类的,就比如数据库的BinLog消息,数据库执行新增,修改,删除语句,那BinLog记录的也必须是新增,修改,删除语句,这个很好理解吧。

那话不多说,咱们直接开整~

风和日丽,天朗气清,又是适合面试的一天,作为一个十面九offer的面试者,又来拜访面试官了。

小伙子,上次咱们聊到RocketMQ的性能优化,你回答的不错,那你知道RocketMQ是怎么保证顺序消息的吗?

哎哟,这不是侮辱人呢吗,我都自己聊到RocketMQ了,我害怕你问?那我害怕你不问呢。

推了推眼镜,故作思考:

是这样的面试官大佬,顺序消息呢,分为顺序发送和顺序接收,而在RocketMQ中呢,本身是支持顺序消息的, 所以在代码上实现起来也是很简单的。

顺序发送消息:

  1. 首先,我们可以把我们spring.properties中的配置更改为以下配置,保证同步发送:

    spring.cloud.stream.rocketmq.bindings.output.pruducer.sync=true

  2. 其次,我们在业务代码中发送消息时,指定消息发送的Header,指定发送到第0个消息队列:

     ini 

    复制代码

    @RestController public class OrderlyController {    @Autowired    private Source source;        @GetMapping(value = "/orderly")    public String orderlySend() {        List<String> messageList = Arrays.asList("insert", "update", "delete");                for (String message : messageList) {            MessageBuilder builder = MessageBuilder.withPayload(message).setHeader(BindingHeaders.PARTITION_HEADER, 0);                        Message msg = builder.build();            source.output().send(message);       }        return "success";   } }

顺序接收消息:<

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值