我正在使用 DefaultMessageListenerContainer 来使用来自主题的消息(代理是 ActiveMQ)。因为消费者是在运行时创建的,所以我正在执行以下操作:
1)我在春天配置了一个 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();
不幸的是,该容器错过了有关该主题的一些消息。有人知道我在做什么错吗?