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)新しいコンシューマーが必要な場合は、アプリケーションconextから新しいコンシューマーを取得し、destinationNameを再構成します。
DefaultMessageListenerContainer container = context.getBean("topiccontainertemplate", DefaultMessageListenerContainer.class);
container.setDestinationName(localEntity.getId().getDestination());
container.setMessageListener(getListener());
container.start();
残念ながら、コンテナはトピックに関するいくつかのメッセージを見逃しています。誰かが私が間違っていることを知っていますか?