如何配置 Spring XD JMS 源以使用 DefaultMessageListenerContainer?
How to configure Spring XD JMS source to use DefaultMessageListenerContainer?
要使 JMS 主题订阅持久化,看来我需要确保
- DefaultMessageListenerContainer(而不是默认的
使用 SimpleMessageListenerContainer)
- 流定义包含 "durableSubscription=true acknowledge=transacted subscriptionName=xxxx pubSub=true"
我设法通过在 xd-singlenode.bat 中指定 spring.profiles.active 来启用 'dmlc',但是有没有更好的方法,例如使用属性或 yml?
xd-singlenode.bat
set SPRING_XD_OPTS=-Dspring.profiles.active=singlenode,dmlc
-Dspring.application.name=singlenode -Dlogging.config=%XD_CONFIG_LOCATION%/xd-singlenode-logback.groovy -Dxd.home=%XD_HOME%
根据JmsSourceModuleOptionsMetadata
源代码我们有:
public String[] profilesToActivate() {
if ("transacted".equals(this.acknowledge)) {
return new String[] { "dmlc" };
}
else {
return new String[] { "smlc" };
}
}
所以,看起来你的 acknowledge=transacted
足以继续
container-class="org.springframework.jms.listener.DefaultMessageListenerContainer"
在 JMS 源中。
要使 JMS 主题订阅持久化,看来我需要确保
- DefaultMessageListenerContainer(而不是默认的 使用 SimpleMessageListenerContainer)
- 流定义包含 "durableSubscription=true acknowledge=transacted subscriptionName=xxxx pubSub=true"
我设法通过在 xd-singlenode.bat 中指定 spring.profiles.active 来启用 'dmlc',但是有没有更好的方法,例如使用属性或 yml?
xd-singlenode.bat
set SPRING_XD_OPTS=-Dspring.profiles.active=singlenode,dmlc -Dspring.application.name=singlenode -Dlogging.config=%XD_CONFIG_LOCATION%/xd-singlenode-logback.groovy -Dxd.home=%XD_HOME%
根据JmsSourceModuleOptionsMetadata
源代码我们有:
public String[] profilesToActivate() {
if ("transacted".equals(this.acknowledge)) {
return new String[] { "dmlc" };
}
else {
return new String[] { "smlc" };
}
}
所以,看起来你的 acknowledge=transacted
足以继续
container-class="org.springframework.jms.listener.DefaultMessageListenerContainer"
在 JMS 源中。