Rabbitmq 在Axon中顺序处理两个事件
我可以在要顺序处理的两个事件之间设置一个序列(或以一定的时间间隔执行)吗 在轴突中。这两个事件同时创建。下面是示例事件 因为我的第二个事件取决于第一个事件的执行结果。我正在使用RabbitMq发布消息Rabbitmq 在Axon中顺序处理两个事件,rabbitmq,axon,Rabbitmq,Axon,我可以在要顺序处理的两个事件之间设置一个序列(或以一定的时间间隔执行)吗 在轴突中。这两个事件同时创建。下面是示例事件 因为我的第二个事件取决于第一个事件的执行结果。我正在使用RabbitMq发布消息 @EventHandler public void handleEvent1(Event1 event) { LOG.debug("An event of type {}, occured.", event.getClass().getName()); } @EventHandler
@EventHandler
public void handleEvent1(Event1 event) {
LOG.debug("An event of type {}, occured.", event.getClass().getName());
}
@EventHandler
public void handleEvent2(Event2 event) {
LOG.debug("An event of type {}, occured.", event.getClass().getName());
}
你介意详细说明一下你需要它的用例吗? 我已经为你的问题准备好了答案,但也许我可以根据你需要的场景提出不同的行动方案 事件将按照它们给您使用的消息源的顺序进行处理 从
事件存储
,这意味着您将按照每个事件的全局索引顺序接收事件。globalIndex
是每个EventMessage
上的一个字段,用于表示它在整个事件存储中的顺序
当使用AMQP/RabbitMQ作为消息源时,类似的顺序也适用。队列中较早的事件将首先在消费端处理
因此,如果希望在Event2
之前处理Event1
,则需要在另一个之前发布它。因此,如果您需要有保证的订单,那么对发布订单的控制是关键。Axon不提供句柄来调整事件的处理顺序,因为如果您的系统不直接依赖事件顺序,它会更理想。处理组件应独立运行,而不是对事件进行假设
希望这能帮助你走出困境