gpt4 book ai didi

java - 实现EventProcessingConfigurer、registerErrorHandler来正确处理@EventHandler错误

转载 作者:行者123 更新时间:2023-12-02 09:36:54 25 4
gpt4 key购买 nike

我尝试通过 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 推导出两层:

  1. 内部EventProcessor
  2. 框架用户编写的事件处理组件

EventProcessor 中引发的异常由您配置的 ErrorHandler 处理。要自定义处理来自您自己的事件处理程序的异常的过程,您必须配置ListenerInitationErrorHandler

要配置常规/默认 ListenerInitationErrorHandler,您可以在第一个代码段中使用以下方法:

EventProcessingConfigurer#registerDefaultListenerInvocationErrorHandler(
Function<Configuration, ListenerInvocationErrorHandler>
)

您还可以查看 Axon 的引用指南:this页面以获取更多信息。希望这可以帮助你@sherring!

关于java - 实现EventProcessingConfigurer、registerErrorHandler来正确处理@EventHandler错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com