ActiveMQの使用

1:

  キューおよびトピック魔法の二種類。キューは、「1の合計を費やして、すべてのリスナーのキュー」であり、ここでは、「すべての加入者が1を消費すること」であります

   //连接配置
プライベート文字列のuserName = "管理者" プライベート文字列のパスワード=「管理者」プライベート文字列のURL = "TCP://192.168.8.65:61616" ; プライベート文字列QUEUENAME =「Qtest_queue」プライベート文字列ます。topicName =「Ttest_topic」。

   1.1キューメッセージキュー

    1.1.1生産

  / ** 
     *キューモード:メーカー
     * / 
    @Test 
    公共 のボイド queueProduceは()スローたJMSException {
         //   #は接続ファクトリを作成する1。 
        ActiveMQConnectionFactory工場= 新新ActiveMQConnectionFactory(ユーザー名、パスワード、URL);
         //   植物接続connectinoから得た#2 
        接続=接続factory.createConnection();
         //   #3開始アクセス
        connection.start();
         //   #4は、セッションを作成するセッション 
        セッションセッション= connection.createSession(、Session.AUTO_ACKNOWLEDGE);
         //  セッション#5セッション先DISTINCT(キュー/トピック)によって作成された 
        キューのキュー= session.createQueue(QUEUENAME);
         //   プロデューサを作成する#セッションのセッション6産生する。 
        のMessageProducerプロデューサー= session.createProducer(キュー);
         //   #ダウンタイム7。メッセージの保存
        ; producer.setDeliveryMode(はDeliveryMode.PERSISTENT)

        //   キューに送信#8生産メッセージ、。
        ためにINT I = 1; I <= 10; I ++ ){ 
            文字列MSG = "最初の" + I + "番目MSG" 
            メッセージのTextMessage = session.createTextMessage(MSG);
             //   #9のMQにメッセージを送信する。
            producer.send(メッセージ)。
        } 

        //   #10关闭资源
        producer.close()。
        session.close(); 
        connection.close(); 
    }

    1.1.2消費者

      1.1.2.1は、受信モード

  

/ ** 
     *キューモード:消費者は
     *受信モード:のみ消費たら(コードループクエリしばらく必要です)
     * / 
    @Test 
    公共 のボイド(queueReceiveConsumer)をスローしたJMSExceptionを{
         //   #1は、接続ファクトリーを作成 
        ActiveMQConnectionFactory =工場の新新ActiveMQConnectionFactoryを(ユーザ名、パスワード、URL);
         //   #2は、植物から得られたconnectino接続された 
        接続の接続= factory.createConnectionを();
         //   #アクセス開始3。
        connection.startを();
         //   #4を、セッションをセッションを作成する。 
        セッションconnection.createSessionセッション= (、Session.AUTO_ACKNOWLEDGE);
         //   #5がセッションセッションによって異なる宛先(キュー/トピック)を作成 
        キューキュー= session.createQueue(QUEUENAME);
         //   #6セッションのセッションが消費者プロデュース作成するため 
        のMessageConsumerコンシューマ= session.createConsumerを(キュー);
         // 同期方法を阻止する受信:メッセージを受信していないが待っている
        真に{)
            メッセージメッセージ = consumer.receive();    // 何のパラメータが待っているされません
            IF(メッセージ=!ヌル &&メッセージのinstanceof のTextMessage){ 
                のTextMessageのTextMessageを = (のTextMessage)メッセージ。
                System.out.println("消費::" + のTextMessage); 
            } {
                 BREAK ; 
            } 
        } 

        //   #10閉鎖リソース
        )(consumer.close; 
        Session.close(); 
        Connection.close(); 
    }

      1.1.2.2listenリスニングモード

    / ** 
     *キューモード:消費者は
     *モードリッスン
     * / 
    @Test 
    公共 のボイド(queueListenConsumer)がスローたJMSException {
         //   #は接続ファクトリを作成する1。 
        ActiveMQConnectionFactory工場= 新新ActiveMQConnectionFactory(ユーザー名、パスワード、URL);
         //   #2工場から接続connectinoのGETTING 
        接続の接続= ; factory.createConnection()
         //   #3開始アクセス
        connection.startを();
         //   #4は、セッションを作成するセッションは、 
        セッションセッション= connection.createSession(、Session.AUTO_ACKNOWLEDGE);
         //  #5セッションセッションの宛先(キュー/トピック)DISTINCTによって作成された 
        キューキュー= session.createQueue(QUEUENAME);
         //   民生プロデュース作成する#6セッションセッション 
        のMessageConsumer消費者= session.createConsumer(キュー);
         //   メッセージを取得する方法を聞きます 
        consumer.setMessageListener(メッセージ- > {
             IF!(メッセージ= nullの &&メッセージのinstanceof のTextMessage){ 
                のTextMessageのTextMessage = (TextMessageの)メッセージ; 
                System.out.printlnはは( "消費::" + のTextMessage); 
            } 
        }); 
        試み{

            System.in.read(); // コンソール不滅を確保:メッセージを聞くことは避けて、コンソールを閉じるとき 
        } キャッチ(IOExceptionをE){ 
            e.printStackTrace(); 
        } 

        //   #10近くリソース
        consumer.closeを( ); 
        Session.close(); 
        Connection.close(); 
    }

 

 

  1.2トピックモード

    1.2.1生産

  @Test
     公共 無効 topicProducer()スローたJMSException { 

        //   #は接続ファクトリを作成する1。 
        ActiveMQConnectionFactory工場= 新新ActiveMQConnectionFactory(ユーザー名、パスワード、URL);
         //   #2接続connectinoの取得するために、工場からの 
        接続接続= factory.createConnectionを();
         //   #3開始アクセス
        connection.start();
         //   #4は、セッションのセッションを作成する 
        セッションセッション= connection.createSession(、Session.AUTO_ACKNOWLEDGEを);
         //   #5は、別個の宛先(キュー/トピック)を作成し、セッションによってセッション 
        のトピックのトピック=session.createTopic(ます。topicName);
         //   プロデューサを作成する#セッションのセッション6産生する。 
        のMessageProducerプロデューサー= session.createProducer(トピック);
         //   #停止時間を節約7メッセージ。
        producer.setDeliveryMode(はDeliveryMode.PERSISTENT); 

        //   #メッセージ製造8。 、キューに送信
        するためのINT I = 1; I <= 10; I ++ ){ 
            文字列MSG = "最初の" + I + "番目MSG" ; 
            のTextMessageメッセージ = session.createTextMessage(MSG); 
            message.setStringProperty( "トップ" 「VIP」); // メッセージ・プロパティを設定し、メッセージの識別を強化(Comsumerいくつかのメッセージをスクリーニングすることができる、に焦点を当てた)
             //   #9は、MQにメッセージを送信します
            producer.send(メッセージ)。
        } 

        //   #10关闭资源
        producer.close()。
        session.close(); 
        connection.close(); 
    }

  1.2.2消費者

    1.2.2.1は、受信モード

  消費者テストモードトピックの//複数    
@Test
公共 ボイド topicReceiveConsumer1()はスローたJMSExceptionを{ // #が接続ファクトリーを作成する1 ActiveMQConnectionFactory工場= 新しい新; ActiveMQConnectionFactory(ユーザ名、パスワード、URL) // 植物から得られた#2が接続connectino 接続接続= factory.createConnection(); // #3開始アクセス connection.start(); // #4がセッションセッションを作成する セッションのセッション= connection.createSession(、Session.AUTO_ACKNOWLEDGE); // 宛先セッションのセッションで作成された#5別個の(キュー/トピック) トピックトピック= session.createTopic(ます。topicName)。 // #6会话セッション创建生产者プロデュース のMessageConsumer消費者= session.createConsumer(トピック)。 一方、){ メッセージ受信 = consumer.receive()。 場合(受信!= NULL &&受信のinstanceof のTextMessage){ のTextMessageメッセージ = (のTextMessage)を受け取ります。 System.out.println( "topicConsumer1收到トピック消息" + message.getText()); } } // #10关闭资源 // consumer.close(); // session.close(); // connection.close(); }

    1.2.2.2は、リスニングモードを聞きます

@Test
     公共 無効 topicListenConsumer2()スローたJMSExceptionは、IOException { 

        //   #は接続ファクトリを作成する1。 
        ActiveMQConnectionFactory工場= 新新ActiveMQConnectionFactory(ユーザー名、パスワード、URL);
         //   植物接続connectinoのから得た#2 
        接続接続= factory.createConnection();
         //   #3開始アクセス
        connection.start();
         //   #4は、セッションを作成するセッション 
        セッションセッション= connection.createSession(、Session.AUTO_ACKNOWLEDGE);
         //   #5は、セッションによって異なる宛先(キュー/トピック)セッションを作成 
        トピックトピック=session.createTopic(ます。topicName)。
        //   #6会话セッション创建生产者プロデュース 
        のMessageConsumer消費者= session.createConsumer(トピック)。

        consumer.setMessageListener(メッセージ - > {
             場合(メッセージ=!ヌル &&メッセージのinstanceof のTextMessage){ 
                のTextMessage MSG = (TextMessageの)メッセージ;
                 試し{ 
                    System.out.printlnは( "topicListenConsumer2收到トピック消息" + msg.getText()) ; 
                } キャッチ(たJMSException電子){ 
            } 
                    e.printStackTrace();
                } 

        })。
        System.in.read(); 
        //   #10关闭资源
 //         consumer.close();
//         session.close();
//         connection.close(); 
    }

 

おすすめ

転載: www.cnblogs.com/draymond/p/11892762.html