【发布时间】:2012-06-06 17:47:14
【问题描述】:
我正在使用 DefaultMessageListenerContainer 来使用来自主题的消息(代理是 ActiveMQ)。因为消费者是在运行时创建的,所以我正在执行以下操作:
1) 我在 spring 中配置了一个 Conainer 模板
<bean id="topiccontainertemplate" class="org.springframework.jms.listener.DefaultMessageListenerContainer" scope="prototype" destroy-method="stop">
<property name="connectionFactory" ref="connectionfactory" />
<property name="pubSubDomain" value="true" />
<property name="cacheLevelName" value="CACHE_CONSUMER" />
<property name="destinationName" value="default" />
</bean>
2) 当需要一个新的消费者时,我会从应用程序上下文中获取一个新的消费者并重新配置destinationName。
DefaultMessageListenerContainer container = context.getBean("topiccontainertemplate", DefaultMessageListenerContainer.class);
container.setDestinationName(localEntity.getId().getDestination());
container.setMessageListener(getListener());
container.start();
不幸的是,容器错过了有关该主题的一些消息。 有人知道我在做什么错吗?
【问题讨论】:
-
“一些消息”是什么意思?它们是初始消息还是间歇性消息?
-
@sully6768 它不是最初的消息。中间的一些消息似乎消失了(我还在调查)。
标签: spring jms spring-jms