Axon4-标准异常处理机制

时间:2019-02-07 07:39:13

标签: exception-handling axon

Axon4的标准异常处理机制是什么? 附加地-您如何确保如果在Saga中的一个事件中(在州之间)发生异常,以前的状态会被回滚?

任何示例都会有所帮助。

1 个答案:

答案 0 :(得分:0)

这是您在Prashant提出的一个相当广泛的问题,并提供了一些答案。另外,您要问两个问题,一个是异常处理方法是什么,两个是如何在Sagas中处理异常。

因此,当您谈论Sagas和事件时,我将采取一种立场,即您想了解事件周围的异常处理过程。首先让我在这里回答您的第一个问题。 正如您可能在参考指南中已经读过的那样,Axon使用一种称为EventProcessor的技术机制来将事件获取到“事件处理组件” Saga实例。

EventProcessors允许两种不同级别的异常处理:  1.在@EventHandler / @SagaEventHandler注释的函数中发生异常时,可以在ListenerInvocationErrorHandler中捕获该异常。  2. EventProcessor中发生异常时,可以在ErrorHandler中捕获该异常。

可以在Axon 4中通过处理EventProcessingConfigurer并调用它们各自的寄存器函数来设置这两项,这使您可以设置全局默认值或针对每个事件处理器进行调整。 默认值分别为LoggingErrorHandlerPropagatingErrorHandler

您要询问的第二个问题是有关发生异常时如何还原Saga中的状态。我想在这里给您的建议是,收到事件后,您首先更改状态,然后再执行操作。

其他操作,如调用第三方服务或发布命令。 如您所知,这些操作可能会失败,并出现异常。但是,这根本不应该还原Saga的状态。 事件已经发生。失败之后的操作不会改变该事件已发生的事实。

因此,我建议您在发生此类异常时执行补偿操作