Axon4 - 标准的异常处理机制
Axon4 - Standard exception handling mechanism
Axon4 的标准异常处理机制是什么?
另外 - 你如何确保如果在 Saga 中的事件之一(在状态之间)发生异常,以前的状态会回滚?
任何例子都会有所帮助。
Prashant 在这里问的这个问题相当宽泛,有几个答案。另外,你问了两个问题,一个是什么是异常处理方法,两个是如何处理 Sagas 中的异常。
因此,当您谈论 Sagas 和事件时,我的立场是您想了解围绕事件的异常处理过程。我先在这里回答你的第一个问题。
正如您可能在参考指南中读到的那样,Axon 使用所谓的 EventProcessor
作为技术机制来将事件发送到您的 'event handling components' 和 Saga 实例。
EventProcessors
允许两种不同级别的异常处理:
1、当@EventHandler
/@SagaEventHandler
注解函数发生异常时,可以在ListenerInvocationErrorHandler
中捕获。
2.当EventProcessor
发生异常时,可以在ErrorHandler
.
中捕获
这两个都可以在 Axon 4 中通过处理 EventProcessingConfigurer
并调用它们各自的寄存器函数来设置,这允许您设置全局默认值或根据事件处理器调整这些。
默认值分别是 LoggingErrorHandler
和 PropagatingErrorHandler
.
你问的第二个问题是发生异常时如何回滚Saga中的状态。这里给大家的建议是,收到事件后,先改变状态,然后再进行其他操作
调用第三方服务或发布命令等其他操作。
正如您所注意到的,这些操作可能会因异常而失败。然而,这根本不应该回滚 Saga 的状态。
事件已经发生。之后的操作失败并不会改变事件已经发生的事实。
因此,我的建议是,如果发生此类异常,您执行补偿操作。
Axon4 的标准异常处理机制是什么? 另外 - 你如何确保如果在 Saga 中的事件之一(在状态之间)发生异常,以前的状态会回滚?
任何例子都会有所帮助。
Prashant 在这里问的这个问题相当宽泛,有几个答案。另外,你问了两个问题,一个是什么是异常处理方法,两个是如何处理 Sagas 中的异常。
因此,当您谈论 Sagas 和事件时,我的立场是您想了解围绕事件的异常处理过程。我先在这里回答你的第一个问题。
正如您可能在参考指南中读到的那样,Axon 使用所谓的 EventProcessor
作为技术机制来将事件发送到您的 'event handling components' 和 Saga 实例。
EventProcessors
允许两种不同级别的异常处理:
1、当@EventHandler
/@SagaEventHandler
注解函数发生异常时,可以在ListenerInvocationErrorHandler
中捕获。
2.当EventProcessor
发生异常时,可以在ErrorHandler
.
这两个都可以在 Axon 4 中通过处理 EventProcessingConfigurer
并调用它们各自的寄存器函数来设置,这允许您设置全局默认值或根据事件处理器调整这些。
默认值分别是 LoggingErrorHandler
和 PropagatingErrorHandler
.
你问的第二个问题是发生异常时如何回滚Saga中的状态。这里给大家的建议是,收到事件后,先改变状态,然后再进行其他操作
调用第三方服务或发布命令等其他操作。 正如您所注意到的,这些操作可能会因异常而失败。然而,这根本不应该回滚 Saga 的状态。 事件已经发生。之后的操作失败并不会改变事件已经发生的事实。
因此,我的建议是,如果发生此类异常,您执行补偿操作。