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

顺序消息: 1. 生产者有多个instance, 需要业务方自己写额外代码,只保证有1个instan

顺序消息: 1. 生产者有多个instance, 需要业务方自己写额外代码,只保证有1个instance去发顺序消息? 有其他办法么? 2. 顺序消息,我看文档没有要求只有一个consumer消费,多个消费方基于ack不会造成乱序? a4c56dd506a1b675fc38df84547b2d3b.png

展开
收起
十一0204 2023-04-03 16:32:50 201 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    使用 Mutex 实现机器级别的锁:业务方可以在多个 instance 之上部署一个共享资源服务,用一个 Mutex 对象来实现机器级别的锁。每次要发送有序消息的 instance,需要先获取 Mutex 锁,如果某个 instance 获取到 Mutex 锁,则该 instance 可以正常发送有序消息,其他 instance 发送无序消息或等待下一个周期。可以采用 Redis 等分布式锁技术实现 Mutex 锁。

    2023-04-24 14:21:22
    赞同 展开评论 打赏
  • 意中人就是我呀!

    这篇文档的逻辑是,对于消息来说顺序的定义,是涵盖生产到消费整个链路的定义的。生产顺序性约束了事件的产生到存储的顺序,解耦后,消费顺序性约束了从存储到业务消费逻辑的顺序。两者配合才是完整的业务预期。此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-04-05 09:10:33
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    你好,第一个问题,除了写代码实现,还可以使用Message Queue分组:可以在Broker端为顺序消息创建一个独立的Message Queue分组,然后将这个分组只分配给一个instance,保证只有指定的instance发送顺序消息。

    第二个问题:确实不会造成乱序,为了保证消息的正确性,消费者需要对消息进行确认(ack),确保消息已经被消费,从而避免重复消费或消息丢失。

    2023-04-03 17:29:05
    赞同 展开评论 打赏

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

热门讨论

热门文章

相关电子书

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