How to open/close Spring Integration channel based on environmental variable?

大城市里の小女人 提交于 2019-12-11 12:11:13

问题


I have a channel that is used as input-channel in a chain. I need to use it only when the environmental variable sd is not true. Is it possible to write this condition into the spring-integration file without creating an additional Java filter? So, I would like this chain not to work when -Dsd=true in the startup script and work in any other case.

<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:


The <chain> is a normal endpoint which can be started/stopped according it lifecycle contract.

So, you can start/stop it by its id at runtime at any time or with any condition.

Another trick that it is just enough to add auto-startup="false" to its definition based on that variable.

M-m-m. I think that should work even with normal property-placeholder:

<int:chain auto-startup="${myChain.autoStartup}">

From other side you can take a look to the profile feature and configure it like this:

 <beans profile="myChain.profile">
     <int:chain>
         ....
     </int:chain>
 </beans>

UPDATE

According to your concern:

So, I would like this chain not to work when -Dsd=true in the startup script and work in any other case

As I said above: you can just only mark it in auto-startup="false" from the beginning, for example using the same Environment:

<int:chain auto-startup="#{environment.getProperty('sd', true)}">


来源:https://stackoverflow.com/questions/34539100/how-to-open-close-spring-integration-channel-based-on-environmental-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!