spring boot2.0 activeMQを統合し、p 2 pとtopicの両方のメッセージモードの互換性の共存を実現
2363 ワード
前の記事ではspring bootを使用してactiveMQを統合し、ptpとtopicの両方のメッセージモードを実現するには、デフォルトでqueueモード(つまりp 2 p)であり、topicを実現するにはプロファイルに次のように配置する必要があります.
前の文章は2つの問題を残した:1.どのようにしてこの2つのモードを共存させることができますか?2.コメントエリアによると、接続プールを開くと、起動項目が間違っているという.次に、この2つの状況について説明します.
p 2 pとtopicの両方のメッセージモード互換性が共存する springboot 2に基づく.0+ 実際消費者は@JmsListener(destination="queue")を使用してキューメッセージを傍受し、消費する際にデフォルトのリスナー: を使用する.注釈から指定されたリスニングを処理するキューのほかに、リスニングコンテナ工場を指定することもできます.もし、queueとtopicの2つのリスニングコンテナ工場を定義すれば、プロジェクトで2つのモードを共存させることができますか?次に、 を試してみましょう.まずqueueとtopicのリスニング工場をそれぞれ定義します: その後、消費者の注釈に傍受容器工場を指定する: これまでプロジェクトで共存queueとtopicの2つのモード を互換化することに成功した.
2つ目の問題については、次の編で話しましょう.
# false,activemq queue , topic true
spring.jms.pub-sub-domain=false
前の文章は2つの問題を残した:1.どのようにしてこの2つのモードを共存させることができますか?2.コメントエリアによると、接続プールを開くと、起動項目が間違っているという.次に、この2つの状況について説明します.
p 2 pとtopicの両方のメッセージモード互換性が共存する
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(JmsListeners.class)
@MessageMapping
public @interface JmsListener {
String id() default "";
String containerFactory() default "";
String destination();
String subscription() default "";
String selector() default "";
String concurrency() default "";
}
@Bean
public JmsListenerContainerFactory> queueListenerFactory(ConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setPubSubDomain(false);
factory.setConnectionFactory(connectionFactory);
return factory;
}
@Bean
public JmsListenerContainerFactory> topicListenerFactory(ConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setPubSubDomain(true);
factory.setConcurrency("1");
factory.setConnectionFactory(connectionFactory);
return factory;
}
@JmsListener(destination = "queue",containerFactory = "queueListenerFactory")
public void receiveQueue(String text) {
log.info("consumer queue :{}",text);
}
@JmsListener(destination = "topic",containerFactory = "topicListenerFactory")
public void receiveTopic(String text) {
log.info("consumer topic :{}",text);
}
2つ目の問題については、次の編で話しましょう.