施加一定的顺序来处理AXON @EventHandler的

时间:2019-02-14 15:33:10

标签: axon

我有两个需要按一定顺序处理的Axon @EventHandler(它们具有要处理的DIFFERENT事件)。 我读过我需要做的事情:

  1. 为所有涉及的事件处理程序添加注释 org.axonframework.config.ProcessingGroup(仅显示顺序 适用于一个处理组);注释在课堂上完成 级别,
  2. 使用org.springframework.core.annotation.Order确定优先级;注释也在类级别完成

但是即使有了此注释,事件也将按照触发顺序进行处理。 还是此功能仅适用于相同类型的事件? 伪代码如下所示:

@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

1 个答案:

答案 0 :(得分:1)

  

但是即使有了此注释,事件也将按照触发顺序进行处理。

这完全符合预期。您是事件处理组件,它们将按照已保留在EventStore中的顺序接收事件。

使用@Order注释唯一可以做的就是强加给定处理组中的事件处理组件的调用顺序。

因此,注释很可能会完成其工作,首先向您的Test1RecordProjection提供事件,并且只有在看到无法处理给定事件后,注释才会移至Test2RecordProjection

但是,此过程不会按事件事件的处理顺序更改,而只会按处理组中的事件处理组件的调用顺序进行更改。