顺序消息: 1. 生产者有多个instance, 需要业务方自己写额外代码,只保证有1个instance去发顺序消息? 有其他办法么? 2. 顺序消息,我看文档没有要求只有一个consumer消费,多个消费方基于ack不会造成乱序?
顺序消息:1. 生产者有多个instance, 需要业务方自己写额外代码,只保证有1个instan[阿里云消息队列MQ]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
顺序消息: 1. 生产者有多个instance, 需要业务方自己写额外代码,只保证有1个instance去发顺序消息? 有其他办法么? 2. 顺序消息,我看文档没有要求只有一个consumer消费,多个消费方基于ack不会造成乱序?
使用 Mutex 实现机器级别的锁:业务方可以在多个 instance 之上部署一个共享资源服务,用一个 Mutex 对象来实现机器级别的锁。每次要发送有序消息的 instance,需要先获取 Mutex 锁,如果某个 instance 获取到 Mutex 锁,则该 instance 可以正常发送有序消息,其他 instance 发送无序消息或等待下一个周期。可以采用 Redis 等分布式锁技术实现 Mutex 锁。
这篇文档的逻辑是,对于消息来说顺序的定义,是涵盖生产到消费整个链路的定义的。生产顺序性约束了事件的产生到存储的顺序,解耦后,消费顺序性约束了从存储到业务消费逻辑的顺序。两者配合才是完整的业务预期。此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”
你好,第一个问题,除了写代码实现,还可以使用Message Queue分组:可以在Broker端为顺序消息创建一个独立的Message Queue分组,然后将这个分组只分配给一个instance,保证只有指定的instance发送顺序消息。
第二个问题:确实不会造成乱序,为了保证消息的正确性,消费者需要对消息进行确认(ack),确保消息已经被消费,从而避免重复消费或消息丢失。