当前位置: 首页 > 知识库问答 >
问题:

Spring integration默认输出通道不工作

阴阳
2023-03-14

在我的应用程序中,我试图基于从服务方法返回的http状态值进行路由,其余的http状态将被路由到默认错误通道。但是这种默认映射不起作用,

@Bean
public IntegrationFlow bridgeFlow() {
    return IntegrationFlows.from(ApplicationConfiguration.QUEUE_CHANNEL)
            .bridge(e -> e.poller(Pollers.fixedDelay(2500).maxMessagesPerPoll(MAX_MSG_PER_POLL)))
            .handle(someService, "someMethod")
            .route(router())                
            .get();
}

public ExpressionEvaluatingRouter router() {
    ExpressionEvaluatingRouter router = new ExpressionEvaluatingRouter("headers['httpStatus']");
    router.setChannelMapping("422", REJECTED_QUEUE_CHANNEL);
    router.setChannelMapping("202", "nullChannel");
    router.setChannelMapping("201", "nullChannel");
    router.setDefaultOutputChannelName(ORR_FAILED_QUEUE_CHANNEL);// When I receive other status codes it should go into this channel. But it's not going and throwing a runtime exception when a status code other than these is received.
    return router;
}

共有1个答案

益和雅
2023-03-14

您无法在路由器上将此选项设置为false:

/**
 * Specify whether this router should ignore any failure to resolve a channel name to
 * an actual MessageChannel instance when delegating to the ChannelResolver strategy.
 * @param resolutionRequired true if resolution is required.
 */
public void setResolutionRequired(boolean resolutionRequired) {

关于这个问题有一个文档:https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#router-common-parameters

 类似资料:
  • 请参考:http://www.kancloud.cn/manual/thinkphp/1797

  • 前面两节里我们用到的输入和输出都是二维数组,但真实数据的维度经常更高。例如,彩色图像在高和宽2个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是$h$和$w$(像素),那么它可以表示为一个$3\times h\times w$的多维数组。我们将大小为3的这一维称为通道(channel)维。本节我们将介绍含多个输入通道或多个输出通道的卷积核。 多输入通道 当输入数据含多个通道时

  • 我试图使用Reapp开发一个混合移动应用程序,但我被困在第一步。我安装了reapp并创建了一个新的app。在第一次运行它后,它抛出了一个404localhost:3011/main.js错误。所以我安装了依赖项: npm安装--保存react@0.13.2 npm安装保存reapp-ui@0.12.54 npm安装--保存重新应用-kit@1.2.15 npm安装--保存dom npm安装网页包

  • 问题内容: 因此,我创建了一个新的gradle项目,选择Java作为“其他库和框架”。 Gradle将编译并维护程序包结构, 但是项目结构->模块中的“模块编译输出路径”设置为。 这确实很烦人,并不是我每次创建新的Java项目时都要更改的东西。 我可以以某种方式更改默认设置,使其与gradle输出路径匹配吗? 问题答案: 您可以将Gradle pluigin用于INtelliJ 在: 然后,当您运

  • 我是新来的Spring。当我运行一个Spring批处理应用程序时,我希望只看到“Hello World!”,但相反,我得到了以下附加细节-

  • 因此,我创建了一个新的gradle项目,选择Java作为“附加库和框架”。 Gradle将编译为<代码>。\构建\类并维护包结构, 但是项目结构中的“模块编译输出路径”—— 这真的很烦人,我不想每次创建一个新的Java项目时都要对其进行更改。 我是否可以更改默认值,使其与gradle输出路径匹配?