Spring集成 - 如何创建可选的jms:消息驱动通道适配器?

时间:2014-01-16 00:23:36

标签: spring spring-integration

我正在寻找一种方法来有条件地设置jms:消息驱动通道适配器在Spring 3.0& spring integration 2.2。

我想在一个属性文件中有一个条目,例如:“create.message.driven.channel.adapter = true”,我希望能够根据以下内容决定是否设置频道属性文件中的条目。

有没有办法只使用spring xml配置和属性文件来实现这个目的?

1 个答案:

答案 0 :(得分:1)

你不能完全按照你描述的方式去做。使用Spring 3.1,您可以使用Spring Profiles ...

<beans>
    ...

    <beans profile="foo">
       <jms:message-driven-adapter ... />
    </beans>
</beans>

然后使用... -Dspring.profiles.active=foo运行。

你可以用JavaConfig

来做
@Bean
public Object foo() {
    // if property set, return an MDA, otherwise a String
}

或者,可能是最简单的,只要您没有明确start()上下文,就可以使用

<jms:message-driven-adapter ... 
    auto-startup="${start.message.driven.channel.adapter}" />

在这种情况下,将定义bean,但它不会被启动,因此甚至不会打开JMS连接。您还需要一个指向属性文件的属性占位符配置器。

但是,自动启动仅适用于从refresh()开始,显式context.start()仍会启动它。