RabbitMQの高度なアプリケーション統合SimpleMessageListenerContainerパートIII


RabbitMQの簡潔シリーズタイトルIII第21章高度な統合アプリケーション  SimpleMessageListenerContainer

今日主な内容:

SimpleMessageListenerContainerのオブジェクト

image1.png

SimpleMessageListenerContainer :シンプルなメッセージ・リスナー・コンテナ。

このクラスは、非常に強いです、我々はそれの多くは、対応する消費者の設定項目を設定されていることができ、このクラスをすることができます会いました。

機能を主張し、キュー(複数のキュー)、自動起動を聞きます

トランザクションをオープンするかどうかを特性設定トランザクション、トランザクションマネージャ、トランザクション属性、トランザクション能力(同時)、ロールバック・メッセージなど、

消費者の数、最大値と最小数、ボリュームの消費者を設定します。

自動セットアップメッセージの確認応答と確認モード、リターンキューかどうか、例外ハンドラ関数キャプチャ

メイン:SimpleMessageListenerContainerを動的に設定することができます。例えば、実行中のアプリケーションに動的にメッセージを受信するために、消費者のサイズ、パターン等の数を変更することができます

多くのベースのRabbitMQ 自己開発した技術のバックエンドのダイナミックな設定で管理ステーションは、また、実現するために、この特性に基づいています

思考:SimpleMessageListenerContainer なぜ動的構成変更を認識することができますか?

コード例:

rabbitMQConfig クラスの追加SimpleMessageListenerContainer 豆のを。でsimpleMessageListenerContainer 多くのものを設定することができます。図は次のとおりです。

image2.png

image3.png


設定し記号モード

image4.png 

@豆

公共  SimpleMessageListenerContainer messageListenerContainer ConnectionFactoryのはconnectionFactory ){  

    SimpleMessageListenerContainer messageListenerContainer  =  新しい  SimpleMessageListenerContainer はconnectionFactory )。 

    //キュー・モニターを追加

    messageListenerContainer.setQueues (queue001()、queue002()、queue003()、  queue_image ()、  queue_pdf ())。

    //モニタデータを設定します

    messageListenerContainer.setConcurrentConsumers 1 )。

    messageListenerContainer.setMaxConcurrentConsumers(5);

    //设置是否重回队列

    messageListenerContainer.setDefaultRequeueRejected(false);

    //设置签收模式 为自动签收

    messageListenerContainer.setAcknowledgeMode(AcknowledgeMode.AUTO);

    //设置客户端tage

    messageListenerContainer.setConsumerTagStrategy(new ConsumerTagStrategy() {

        @Override

        public String createConsumerTag(String queue) {

            return queue+"_"UUID.randomUUID().toString();

        }

    });

    //消息

    messageListenerContainer.setMessageListener(new ChannelAwareMessageListener() {

        @Override

        public void onMessage(Message message, Channel channel) throws Exception {

            String msg = new String (message.getBody(),"UTF-8");

            System.out.println("---------->>消息为:"+msg);

        }

    });

    return messageListenerContainer;


}

启动代码,我们从页面管控台查看:

image5.png

点进去查看:

image6.png

我们可以看到,我们自定义的consumer tag已经生效了

进行发送消息测试。

在测试类中,运行发送消息的代码:

image7.png

运行之后,我们在控制台可以看到,打印出三条数据。也就是我们在RabbitMqConfig类中设置的。如下图:

image8.png

説明に成功したメッセージを待ち受けます。

上記二つの試験の後、私たちのsimpleMessageListenerContainerは正常に設定します。

関連する更新するコードはgit に。

セクション予告の下で:MessageListenerAdapter

image9.png







おすすめ

転載: blog.51cto.com/kaigejava/2430608
おすすめ