首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在spring集成中将导致DestinationResolutionException的消息路由到自定义错误通道

如何在spring集成中将导致DestinationResolutionException的消息路由到自定义错误通道
EN

Stack Overflow用户
提问于 2019-08-06 22:40:18
回答 1查看 44关注 0票数 0

在我的例子中,应用程序接收mqtt消息,并根据消息中的类型值将它们路由到某个通道。这样,我定义了一个IntegrationFlow来路由消息,如下所示:

代码语言:javascript
运行
复制
@Bean
public IntegrationFlow mqttInbound() {
    return IntegrationFlows.from(inbound())
            .transform(new PojoTransformer())
            .<Data, String>route(Data::getType,
                    m -> m.prefix("Channel."))
            .get();
} 

此外,我还定义了一些其他的IntegrationFlow来处理这些通道中的消息,例如

代码语言:javascript
运行
复制
@Bean
public IntegrationFlow normalProcess() {
    return IntegrationFlows.from("Channel.1")
            .handle("normalHandler", "handle")
            .channel("mqttOutboundChannel")
            .get();
}

问题是,如果没有定义的映射(例如类型是"4"),就会出现一个类似org.springframework.messaging.core.DestinationResolutionException: failed to look up MessageChannel with name 'Channel.4' in the BeanFactory的异常。我的问题是,如何将所有这些未映射的消息路由到某个错误通道,然后进行一些异常处理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-06 23:29:50

resolutionRequired设置为false并添加默认输出通道。

代码语言:javascript
运行
复制
        .<Data, String>route(Data::getType,
                m -> m.prefix("Channel.")
                      .resolutionRequired(false)
                      .defaultOutputChannel("noRouteChannel"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57378579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档