我有两个Axon@EventHandler需要按一定的顺序处理(它们有不同的事件要处理)。我读到我需要:
但是即使有了这个注释,事件也是按照它们被触发的顺序处理的。还是该功能只适用于相同类型的事件?伪代码如下所示:
@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
但是即使有了这个注释,事件也是按照它们被触发的顺序处理的。
那完全如预期的那样。您的事件处理组件将按照事件在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 使得你的代码和测试分离。