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(); }