ActiveMQのメッセージの信頼性 - 持続性

メッセージの信頼性を確保するための3つの側面

  1.消息的持久化

  2.物事

  3.記号

A:PERSISTENT:永続

    パラメータ説明:1.持続性

         2.非持久化

 

 

   Javaの永続化と非永続の内側に設定してください

 

  持久化:

    持続性が持続するように設定されています

     ダウンタイムの前に、データは通常、ない消費であります

  

    サーバーの復旧後にデータがまだ存在している、メッセージが消費されていない3  

  非持久化

    非永続的な設定

 

    前ダウン

     サーバーが復元された後、メッセージが失われます

 

 

  指定されていない場合、デフォルトは永続的である場合、上記の例では、持続的かつ非永続指定します

  これらは、キュー(待ち行列)のモデルです

 

   テーマ(トピック)

    サブスクリプションモデルの下で生産者は、何の加入者が存在しない場合、および、メッセージがニュースを無駄に等しいされるものにかかわらずにメッセージを送信しても意味がありませんよう永続的なテーマは、加入者のためのものであるので、消費者側にする必要があります固執

   実験:

   1.まず、消費者が購読:(オンライン)の加入者を図

  コード:

パッケージcom.steak.activemq.test。

輸入org.apache.activemq.ActiveMQConnectionFactory; 

インポートするjavax.jms *。; 

インポートにjava.io.IOException; 

パブリック クラスコンシューマー{ 

プライベート 静的 最終 StringACTIVE_URL = "TCP://127.0.0.1:61616" ; 

    プライベート 静的 最終 StringQUEUE =「topic_persist」

    パブリック 静的 ボイドメイン(文字列[]引数)スローたJMSExceptionは、IOException { 

// 创建连接工厂

        ActiveMQConnectionFactory activeMQConnectionFactory = 新しいですActiveMQConnectionFactory(ACTIVE_URL); 

        // 接続入手する工場接続することにより、

        接続接続 = activeMQConnectionFactory.createConnectionを(); 

        connection.setClientID(「劉カード」); // 加入

        // セッションを作成し、最初のものは、パラメータは、第二と呼ばれます記号と呼ばれる

        セッションのセッションを(= connection.createSession 、Session.AUTO_ACKNOWLEDGE); 

        // 先作成

        トピックトピック = session.createTopic(QUEUE); 

        // 永続加入者

        のTopicSubscriberのTopicSubscriber(トピックを= session.createDurableSubscriberを、 "発言を使用します" ); 

        connection.start(); 

        メッセージメッセージ= TopicSubscriber.receive(); 

        一方、NULL!= メッセージ){ 

のTextMessageのTextMessage = (のTextMessage)メッセージ; 

            のSystem.out.println( "トピックメッセージの永続性" + textMessage.getText()); 

            // もし1秒メッセージが受信されなかった後、自動的に離陸に対応し、切断

            メッセージを = topicSubscriber.receive(1000L ); 

        } 

Session.close(); 

        Connection.close(); 

    } 

}

 

     2.次に、生産者(出版社)開始:このポイントリリース3で、加入者は3を受け取りました

   コード:

パッケージcom.steak.activemq.test; 

インポートorg.apache.activemq.ActiveMQConnectionFactory; 

インポートするjavax.jms。* ; 

パブリック クラスのプロデューサー{ 

プライベート 静的 最終 StringACTIVE_URL = "TCP://127.0.0.1:61616" ; 

    プライベート 静的 最終 StringQUEUE =「topic_persist」; 

    パブリック 静的 ボイドメイン(文字列[]引数)がスローたJMSException { 

// 接続ファクトリを作成

        ActiveMQConnectionFactory activeMQConnectionFactory = 新しい新しいActiveMQConnectionFactory(ACTIVE_URLを); 

        // 接続ファクトリを介して、接続が得られます。

        接続の接続 = activeMQConnectionFactory.createConnection(); 

        // セッションを作成

        セッションをセッション = connection.createSession(、Session.AUTO_ACKNOWLEDGEを); 

        // 宛先を作成する

        トピックのトピック = session.createTopic(QUEUE); 

        //はメッセージプロデューサ作成

        のMessageProducerをMessageProducer = session.createProducer(トピック); 

            connection.start(); 

        //はのMessageProducerキューMQ使用して生産にメッセージを送信

        するためのINT。;私は<3 I ++はI = 0 ){ 

// 作成メッセージ

            のTextMessageのTextMessageを= Session.createTextMessage( "メッセージ" + I); 

            // のMessageProducerを介してメッセージを送信する

            messageProducer.send(のTextMessage); 

        } 

// リソース閉じ

        messageProducer.closeを(); 

        Session.close(); 

        Connection.close(); 

        システム。 out.printlnを( "送信完了メッセージ" ); 

    } 

}

 

  オンラインからの消費者がオフラインになったので、切断上でメッセージを受信しない場合、我々は1秒後に設定しているので

 

 

   ()を受信するように設定されている場合、それはモニターされている(当該されたマイクロチャネル公衆番号に相当し、メッセージを受信することができました)

  消費者がオンラインであるかどうか、あなたがメッセージを受信できない、離陸するために引き継がれたメッセージ(私と同等のものを受け取ることはありません、ないオンライン、次の時間を接続し、受信、私は再びこのことについて心配します、I私はまた、メッセージが受信されている。この時間を取ることができます)、ニュースは確かに受信されていない前に最初に登録され、時間の前提を登録

  

おすすめ

転載: www.cnblogs.com/steakliu/p/11590160.html