• Rocket Mq 保证消息有序


    默认情况下Rocket MQ消息是无序的,原因在于Producer 发送的消息时选择Queue使用的策略是轮询的方式,这样消息就负载到Topic的多个Queue中;在发送消息过程中,由于网络、距离等原因,到达Queue的顺序不可预测,到达Queue时,将会变成无序的,在此基础上,消费端有多个Consumer,这些Consumer消费消息是独立的,无法建立先后顺序关系。

    如果将一组有序消息按照策略发送到同一个的Queue中,保证了在Queue中的消息总体有序;但这一组有序消息由于网络波动,到达Queue的时间是无序的,这一组有序消息也将会变成无序消息,需要保证这一组有序消息发送时,保证一条消息发送成功才能发送下一条消息。

    Consumer选择Queue的策略将不会影响消费Queue中时的有序消息,因为Queue消费是有序的,无论Consumer怎么选择Queue,都能保证按序消费消息;如果一个Consumer消费多个Queue,多个Queue中的消息是有序的,也将不会消费端按序消费消息;如果Consumer关闭,由新的Consumer替代,只需要解决消息重复消费的问题,但是并不影响有序消费消息。

    总结:实现Rocket Mq 顺序消息,Producer端需要在发送消息时保证一组有序消息发送到同一个Queue中,并且保证消息同步发送,一条消息发送成功才能发送下一条消息;消费端需要解决Consumer重启或网络波动导致的重复消费问题,但是不影响顺序消息的消费。

  • 相关阅读:
    20150212-2015
    SM30维护视图添加按钮
    SAP保存操作记录CDHDR和CDPOS表
    20150123-慢慢
    20150124-轻轻
    维护 物料主数据 号码段
    ABAP DEMO-2018
    工具
    幽门螺杆菌资料收集
    MySQL 8 连接时出现 1251 和 2059 错误
  • 原文地址:https://www.cnblogs.com/diandiandidi/p/15355875.html
Copyright © 2020-2023  润新知