如何在IntegrationFlowBuilder中获取通道方法,了解通道名称的spel表达式?

时间:2014-09-26 22:38:13

标签: spring spring-integration

我在邮件的标题中有一个频道名称。我想将消息(包含消息上的所有标题)发送到该频道。我试图为它定义一个IntegrationFlow。例如,我想要提交消息的频道名称是在消息的channelName标题中设置的,我的流程定义如下:

public IntegrationFlow someFlowDefinition(){
 return IntegrationFlows.from("channelA")
 .channel("headers['channelName']")
 .get();
}

这里的问题是.channel()不理解spel表达式。所以它认为频道的名称是"标题[' channelName']"

我也尝试使用SpelExpressionParser,但无法设置正确的上下文(如下图所示)。

public IntegrationFlow someFlowDefinition(){
 return IntegrationFlows.from("channelA")
 .channel(new SpelExpressionParser().parseExpression("headers['channelName']").getValue(???))
 .get();
}

据我所知,我需要将Message设置为上下文,但不确定如何在流定义中获取对Message的引用

任何指针?

1 个答案:

答案 0 :(得分:0)

.channel()是静态的;你需要Router

使用.route("headers['channelName']")