【问题标题】:JMS (ActiveMQ) - Event to be consumed only after another event was consumedJMS (ActiveMQ) - 只有在另一个事件被消费后才被消费的事件
【发布时间】:2023-03-28 14:48:01
【问题描述】:
我基本上有两个事件:
UserCreatedEvent.class
和
UserUpdatedEvent.class
我有一个同时产生这两个事件的流程(请记住,这只是一个示例)
是否有可能确保(通过一些配置)只有在第一个事件被消费后才会消费第二个事件? (我不希望在处理创建事件之前处理更新事件。)
P.S 这两个事件正在生成到不同的队列。
最后我想指出我正在使用 JMSTemplate (spring) 来处理事件。用activemq。
【问题讨论】:
标签:
java
spring
jms
activemq
jmstemplate
【解决方案1】:
您可以使用 CreateEvent 的 id 将关联 id 添加到 UpdateEvent。如果相关 id 已设置,但具有该 id 的 CreateEvent 尚未使用,则消费者不应使用 UpdateEvent。
如果您有多个消费者,则应添加新事件 CreateEventProcessingFinished[id],该事件将被 UpdateEvent 消费者捕获并视为使用给定关联 ID 的事件的许可。
但我认为最好通过改变架构来避免消息同步(如果可能的话)。