作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试通过 EventProcessingConfigurer.registerErrorHandler() 方法添加 ErrorHandler,当它显示在配置上时,类本身并未被调用。
我目前使用 Axon 4.1.1(不带 Axon 服务器)和 Spring Boot 2.1.6.RELEASE。
我的代码基于 github/AxonFramework但它的作用并不相同。
配置:
@Autowired
public void configure(final EventProcessingConfigurer config) {
TestErrorHandler testErrorHandler = new TestErrorHandler();
config.registerErrorHandler("SolrProjection", configuration -> testErrorHandler);
}
错误处理程序:
public class TestErrorHandler implements ErrorHandler, ListenerInvocationErrorHandler {
@Override
public void handleError(final ErrorContext errorContext) throws Exception {
System.out.println("TestErrorHandler.handleError()");
}
@Override
public void onError(final Exception exception, final EventMessage<?> event, final EventMessageHandler eventHandler) {
System.out.println("TestErrorHandler.onError()");
}
}
投影:
@Configuration
@RequiredArgsConstructor
@ProcessingGroup("SolrProjection")
public class SolrProjection {
@EventHandler
public void onEvent(final TestEvent event,
@SequenceNumber Long sequenceNumber,
@Timestamp final Instant requestTimestamp,
@MessageIdentifier final String messageIdentifier,
final MetaData metaData) {
if (true) {
throw new IllegalStateException();
}
}
即使我直接抛出错误,我也没有在控制台中看到两个 system.out 。并将日志语句放入 @EventHandler 中并正确调用。
最佳答案
ErrorHandler
的任务是处理与您预期不同的异常。在处理事件时,Axon Framework 推导出两层:
EventProcessor
层EventProcessor
中引发的异常由您配置的 ErrorHandler
处理。要自定义处理来自您自己的事件处理程序的异常的过程,您必须配置ListenerInitationErrorHandler
。
要配置常规/默认 ListenerInitationErrorHandler
,您可以在第一个代码段中使用以下方法:
EventProcessingConfigurer#registerDefaultListenerInvocationErrorHandler(
Function<Configuration, ListenerInvocationErrorHandler>
)
您还可以查看 Axon 的引用指南:this页面以获取更多信息。希望这可以帮助你@sherring!
关于java - 实现EventProcessingConfigurer、registerErrorHandler来正确处理@EventHandler错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432946/
我是一名优秀的程序员,十分优秀!