当前位置: 首页 > 知识库问答 >
问题:

对处理AXON@EventHandler的

陆涵畅
2023-03-14

我有两个Axon@EventHandler需要按一定的顺序处理(它们有不同的事件要处理)。我读到我需要:

  1. 使用org.axonframework.config.processingGroup注释所有涉及的事件处理程序(order似乎只适用于一个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) {
    ...
    }
}

轴突4.0

共有1个答案

高增
2023-03-14

但是即使有了这个注释,事件也是按照它们被触发的顺序处理的。

那完全如预期的那样。您的事件处理组件将按照事件在EventStore中持久化的顺序接收事件。

对于@order注释,您唯一能做的就是施加一个调用给定处理组中事件处理组件的顺序。

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

 类似资料:
  • exception$10(errorcode.java:88)在org.axonframework.axonserver.connector.errorcode.convert(errorcode.java:182)在org.axonframework.axonserver.connector.command.command.command.axonservercommandbus$1.onnex

  • 但是,这个解决方案的问题是它是不可伸缩的。我必须从一开始就知道我必须有多少节点和线程,因为以后不可能更改它:如果我增加并重新启动处理器,什么也不会发生。更糟糕的是,如果我减少了段计数:对于“删除”的段来说,事件永远不会被处理! 理想情况下,它应该能够指定每个节点应该使用的线程数。之后,当新的节点添加到处理器中时,段的数量应该相应地扩大。类似地,如果我移除节点,段的数量应该会减少。这可能与轴突,或它

  • 让我们举一个电子邮件传奇的例子:当一个用户注册时,我们创建一个发布UserRegisterEvent的用户聚合,一个传奇将被创建,这个传奇负责确保注册电子邮件被发送给用户(电子邮件可能包含验证密钥、欢迎消息等)。 我们是否应该使用: > 用try/catch->缩放吗? 使用deadline是因为我们只使用“send”,而不处理命令的最终错误,这可能是发送失败(其他服务关闭,等等) 其它的呢? 还

  • 如何读取自创建以来该聚合的所有事件?

  • 取消绑定事件处理。 参数 名称 类型 默认值 描述 eventName string 事件名称,支持: 'click'、 'mousedown'、 'mouseup'、 'mousewheel'、 'dblclick'、 'contextmenu'。 eventHandler Function 事件处理的回调函数。 相关 on。

  • Axon Framework 用来帮助开发人员构建基于命令查询责任分类(Command Query Responsibility Segregation: CQRS)设计模式的可伸缩、可扩展和可维护应用程序的框架。你只需要把工作重心放在业务逻辑的设计上。通过一些 Annotation ,Axon 使得你的代码和测试分离。