Spring Integration Java DSL:如何使用channelMapping方法将路由到头文件中名称为通道的通道?

3
如何使用channelMapping方法将路由到头信息中指定名称的通道?如果我尝试这样做:
    @Bean
    private IntegrationFlow postDataToChannelX() {
            return f -> f
            ...
               .<String, Boolean> route(s -> s.equals("[]"), m -> m
                    .channelMapping(false, "headers['channelName']")
                    .channleMapping(true, ...);
    }

出现了:

由于:org.springframework.messaging.core.DestinationResolutionException: 在BeanFactory中查找名称为'headers['channelName']'的MessageChannel失败;嵌套异常为:org.springframework.beans.factory.NoSuchBeanDefinitionException: 名称为'headers['channelName']'的bean不存在

1个回答

6
您可以这样操作:
.route(Message.class, (m) -> m.getHeaders().get("channelName"))

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


修改了问题。在channelMapping之前有路由,因此我认为需要使用channelMapping。那么如何使用channelMapping方法将消息路由到标头中名称为某个通道的通道? - Mike
好的。你也可以将它包含在路由函数中。我的意思是,你可以使用三元运算符并返回所需的通道。映射仅适用于静态通道。 - Artem Bilan
感谢您的答案。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接