Spring integration Spring Integration Java DSL:如何使用channelMapping方法路由到标题中包含名称的频道?

Spring integration Spring Integration Java DSL:如何使用channelMapping方法路由到标题中包含名称的频道?,spring-integration,spring-integration-dsl,Spring Integration,Spring Integration Dsl,如何使用channelMapping方法路由到标题中包含名称的频道?所以如果我试试这个 @Bean private IntegrationFlow postDataToChannelX() { return f -> f ... .<String, Boolean> route(s -> s.equals("[]"), m -> m

如何使用
channelMapping
方法路由到标题中包含名称的频道?所以如果我试试这个

    @Bean
    private IntegrationFlow postDataToChannelX() {
            return f -> f
            ...
               .<String, Boolean> route(s -> s.equals("[]"), m -> m
                    .channelMapping(false, "headers['channelName']")
                    .channleMapping(true, ...);
    }
@Bean
专用集成流postDataToChannelX(){
返回f->f
...
.route(s->s.equals(“[]”),m->m
.channelMapping(假,“标题['channelName']”)
.信道映射(真,…);
}
来了

原因:org.springframework.messaging.core.DestinationResolutionException:未能在BeanFactory中查找名为“headers['channelName']”的MessageChannel;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“headers['channelName']”的bean可用


你可以这样做:

.route(Message.class, (m) -> m.getHeaders().get("channelName"))

因此,您根本不需要任何映射,因为您直接在路由函数中解析到目标频道。

编辑了这个问题。在
频道映射之前有路由,所以我想我需要
频道映射
。那么如何使用频道映射方法路由到标题中的频道?好的。您知道吗也可以将其包含到路由函数中。我的意思是,您可以使用三元运算符并返回所需的通道。映射仅适用于静态通道谢谢答案