【问题标题】:Spring Integration - How to create an optional jms:message-driven-channel-adapter?Spring Integration - 如何创建可选的 jms:message-driven-channel-adapter?
【发布时间】:2014-01-16 00:23:36
【问题描述】:
我正在寻找一种在 spring 3.0 和 spring 集成 2.2 中有条件地设置 jms:message-driven-channel-adapter 的方法。
我想在属性文件中为每个环境添加一个条目,例如:“create.message.driven.channel.adapter=true”,我希望 spring 决定是否仅基于设置通道属性文件中的条目。
有没有办法只使用 spring xml 配置和属性文件来完成这个?
【问题讨论】:
标签:
spring
spring-integration
【解决方案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() 仍会启动它。