我有一个嵌套链。我想在内链中添加一个过滤器,以便它可以在特定条件下继续流动或从链中退出。如果我没有设置丢弃频道或将丢弃频道设置为" nullChannel",它会挂起。所以,我想到了路由到由Spring设置的头文件中的replyChannel。使用以下配置,我得到SpelEvaluationException。如何将discard-channel设置为replyChannel?请注意,由于我想多次调用childChannel,所以replyChannel始终不一样。
<int:chain id="parentChain" input-channel="request">
....
<int:gateway request-channel="childChannel" />
<int:header-enricher .. </header-enricher>
<int:gateway request-channel="childChannel" />
....
</int:chain>
<int:chain input-channel="childChannel">
..
<int-xml:xpath-filter discard-channel="#{headers['replyChannel']}">
<int-xml:xpath-expression expression="" />
</int-xml:xpath-filter>
..
</int:chain>
答案 0 :(得分:0)
不确定你的逻辑是否正确,但你真的不能这样丢弃。
您可以这样做:
<int-xml:xpath-filter discard-channel="discardChannel">
...
<int:header-value-router input-channel="discardChannel" header-name="replyChannel"/>
Filter
模式(及其组件)分别用于那些不应该进入主下游的消息。
我认为你应该使用不同的东西,而不是<filter>
......