我有一个用作链中输入通道的通道。我只有在环境变量sd不正确时才需要使用它。是否可以将此条件写入spring-integration文件而无需创建其他Java过滤器?因此,当启动脚本中的-Dsd = true并且在任何其他情况下工作时,我希望此链不能工作。
<int:channel id="sdCreationChannel">
<int:queue/>
</int:channel>
<int:chain input-channel="sdCreationChannel" output-channel="debugLogger">
<int:poller fixed-delay="500" />
<int:filter ref="sdIntegrationExistingRequestSentFilter" method="filter"/>
<int:transformer ref="sdCreationTransformer" method="transformOrder"/>
<int:service-activator ref="sdCreationServiceImpl" method="processMessage">
<int:request-handler-advice-chain>
<ref bean="retryAdvice"/>
</int:request-handler-advice-chain>
</int:service-activator>
</int:chain>
答案 0 :(得分:1)
<chain>
是正常的endpoint
,可以根据lifecycle
合同启动/停止。
因此,您可以在运行时start/stop
id
在任何时间或任何条件下auto-startup="false"
。
另一个技巧就是基于该变量将<int:chain auto-startup="${myChain.autoStartup}">
添加到其定义中。
M-M-M我认为这应该适用于普通的property-placeholder:
profile
从另一方面,您可以查看 <beans profile="myChain.profile">
<int:chain>
....
</int:chain>
</beans>
功能,并将其配置为:
auto-startup="false"
<强>更新强>
根据您的关注:
所以,当启动脚本中的-Dsd = true并且在任何其他情况下工作时,我希望此链不起作用
如上所述:您只能从Environment
开始标记,例如使用相同的<int:chain auto-startup="#{environment.getProperty('sd', true)}">
:
60n + 5