如何根据环境变量打开/关闭Spring Integration通道?

时间:2015-12-30 23:57:54

标签: java environment-variables spring-integration

我有一个用作链中输入通道的通道。我只有在环境变量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>

1 个答案:

答案 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