我有两个需要按一定顺序处理的Axon @EventHandler(它们具有要处理的DIFFERENT事件)。 我读过我需要做的事情:
但是即使有了此注释,事件也将按照触发顺序进行处理。 还是此功能仅适用于相同类型的事件? 伪代码如下所示:
@Component
@RequiredArgsConstructor
@ProcessingGroup("mytest")
@Order(2)
public class Test2RecordProjection {
@EventHandler
public void on(Test2CreatedEvent evt) {
...
}
}
@Component
@RequiredArgsConstructor
@ProcessingGroup("mytest")
@Order(1)
public class Test1RecordProjection {
@EventHandler
public void on(Test1CreatedEvent evt) {
...
}
}
Axon 4.0
答案 0 :(得分:1)
但是即使有了此注释,事件也将按照触发顺序进行处理。
这完全符合预期。您是事件处理组件,它们将按照已保留在EventStore
中的顺序接收事件。
使用@Order
注释唯一可以做的就是强加给定处理组中的事件处理组件的调用顺序。
因此,注释很可能会完成其工作,首先向您的Test1RecordProjection
提供事件,并且只有在看到无法处理给定事件后,注释才会移至Test2RecordProjection
。
但是,此过程不会按事件事件的处理顺序更改,而只会按处理组中的事件处理组件的调用顺序进行更改。>