0
问题:处理消息依次用竞争消费者
- I接收消息(说订单)上的队列中的特定序列(FIFO)
- 我已在队列中的竞争消费者
- 为了进一步添加到复杂,消费者可能有兴趣取决于其状态的命令只有特定版本。(说VERSION1,版本2和版本5)
- 顺序版本号是可用的顺序,但由于不能用于测序我的听众可能不感兴趣所有版本(消费者可能只对版本说感觉版本1,版本2和版本5)
我如何确保我处理邮件消费者的顺序我收到他们?
问题:处理消息依次用竞争消费者
我如何确保我处理邮件消费者的顺序我收到他们?
你不能与多个消费者,至少不根据JMS。你需要提供逻辑。
我想所有的解决方案吮吸,因为它需要异步集成的美丽,并试图使其同步。对于附有版本的每个“对象”或“消息”或“类型”,您可以跟踪收到的版本并尽量保证按顺序处理它们。如果消费者不按顺序接收它们,消费者可能会停下脚步,或者重新排队消息,但是这两种解决方案都有一些不好的地方。
如果有一组有限的对象被版本化,并且您可能多次看到对象,则可以使用消息选择器来确保给定的使用者是唯一能够看到该特定ID的消息的使用者。
如果你的JMS提供者支持优先级队列,您可以分配不同的优先级,并希望这给他们以适当的顺序,但即使这样,也似乎有一种竞争状态连接到它。
再次我会问这样一个问题:您正在使用正确的技术?
感谢您的答复斯科特。我确实想过有一个分布式存储来确定我们处理的是什么版本,但它不适用于识别第一个事件。 (假设版本1由Listener 1处理,版本2由Listener 2处理。我们不能保证顺序sinc,当它们查找时,它们都可能找不到记录)。在我们的例子中,它也不是有限集合。我们需要一个FIFO队列,并保证交付和其他故障转移机制。很想听听你对可考虑 – user7161330
除了通过一个单一的消费类序列化任何其他技术的想法,不知道有一个解决方案,如果你不能确定状态(即,V2可以/不可以是第一事件来处理,无法检查),那么不知道有一个可行的解决方案。甚至在尝试编码之前,都需要将状态图放在一起.... –