Spring Integration和全局默认错误通道

a1o7rhls  于 2023-04-19  发布在  Spring
关注(0)|答案(1)|浏览(138)

Java 11和Spring Integration 5.x在这里。目前我在每个IntegrationFlow上指定错误通道如下:

@Bean
public IntegrationFlow flow1(MessageChannel channel1) {
    return IntegrationFlows.from(channel1)
        .enrichHeaders(h -> h.header("errorChannel", ERRORS_CHANNEL_NAME))
        // do stuff
        .get();
}

@Bean
public IntegrationFlow flow2(MessageChannel channel2) {
    return IntegrationFlows.from(channel2)
        .enrichHeaders(h -> h.header("errorChannel", ERRORS_CHANNEL_NAME))
        // do stuff
        .get();
}

@Bean
public IntegrationFlow flow3(MessageChannel channel3) {
    return IntegrationFlows.from(channel3)
        .enrichHeaders(h -> h.header("errorChannel", ERRORS_CHANNEL_NAME))
        // do stuff
        .get();
}

有没有一种方法可以设置一个“全局”错误通道,并默认使用它,这样我就不必在每个流中重新定义要使用的错误通道?

chhqkbe1

chhqkbe11#

框架中有一个适合你的:https://docs.spring.io/spring-integration/docs/current/reference/html/core.html#channel-special-channels。
然而,请按照错误处理的链接。在消息处理中的任何错误并不总是进入错误通道。
为了方便起见,还有一个HeaderEnricherSpec.errorChannel() API:我不知道你为什么要用header("errorChannel") ...

相关问题