日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

004_Queue消息模式发送文本消息

發布時間:2025/4/17 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 004_Queue消息模式发送文本消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 新建一個名為JMSActiveMQTextMessage的Java項目, 同時拷入相關jar包

2. 相關jar包可以在apache-activemq-5.16.1\lib目錄下找到

3. 編輯QueueTextMessageProducer.java

package com.jmsapp.qtm;import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;public class QueueTextMessageProducer {// 默認連接用戶名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默認用戶密碼private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 默認連接地址常量ActiveMQConnection.DEFAULT_BROKER_URL, 值是failover://tcp://localhost:61616// 服務器地址private static final String dftUrl = "failover://tcp://192.168.25.138:61616";// 隊列名稱private static final String queueName = "queueTextMsg";public static void main(String[] args) {// 1. 創建一個連接工廠ConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);// 連接對象Connection conn = null;// 會話對象Session session = null;try {// 2. 創建連接conn = cf.createConnection();// 3. 啟動連接conn.start();// 4. 創建會話session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);// 5. 創建消息目的地。如果是點對點, 那么它的實現是Queue; 如果是訂閱模式, 那它的實現是Topic。這里我們創建一個名為queueTextMsg的消息隊列。Destination destination = session.createQueue(queueName);// 6. 消息生產者MessageProducer producer = session.createProducer(destination);// 7. 創建文本消息和發送消息for(int i = 0; i < 10; i++) {TextMessage message = session.createTextMessage();message.setText("JMS TextMessage類型的消息 " + i);producer.send(message);System.out.println("發送: " + message.getText());}} catch (JMSException e) {e.printStackTrace();} finally {try {if (session != null) {session.close();}} catch (JMSException e1) {e1.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (JMSException e) {e.printStackTrace();}}}}} }

4. 運行QueueTextMessageProducer.java

5. 管理后臺查看

6. 編輯QueueTextMessageConsumer1.java

package com.jmsapp.qtm;import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;public class QueueTextMessageConsumer1 {// 默認連接用戶名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默認用戶密碼private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 服務器地址private static final String dftUrl = "failover://tcp://192.168.25.138:61616";// 隊列名稱private static final String queueName = "queueTextMsg";public static void main(String[] args) {// 1. 創建一個連接工廠ConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);// 連接對象Connection conn = null;// 會話對象Session session = null;try {// 2. 創建連接conn = cf.createConnection();// 3. 創建會話session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);// 4. 創建消息目的地。如果是點對點, 那么它的實現是Queue; 如果是訂閱模式, 那它的實現是Topic。這里我們創建一個名為queueTextMsg的消息隊列。Destination destination = session.createQueue(queueName);// 5. 消息消費者MessageConsumer consumer = session.createConsumer(destination);// 6. 啟動連接, 準備開始接收消息conn.start();// 7. 接收消息while(true) {TextMessage message = (TextMessage) consumer.receive(3000);if(message == null) {break;}System.out.println("接收: " + message.getText());}} catch (JMSException e) {e.printStackTrace();} finally {try {if (session != null) {session.close();}} catch (JMSException e1) {e1.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (JMSException e) {e.printStackTrace();}}}}} }

7. 運行QueueTextMessageConsumer1.java

8. 管理后臺查看

9. 編輯QueueTextMessageConsumer2.java, 創建消息監聽器異步接收消息

package com.jmsapp.qtm;import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;public class QueueTextMessageConsumer2 {// 默認連接用戶名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默認用戶密碼private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 服務器地址private static final String dftUrl = "failover://tcp://192.168.25.138:61616";// 隊列名稱private static final String queueName = "queueTextMsg";public static void main(String[] args) {// 1. 創建一個連接工廠ConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);try {// 2. 創建連接Connection conn = cf.createConnection();// 3. 創建會話Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);// 4. 創建消息目的地。如果是點對點, 那么它的實現是Queue; 如果是訂閱模式, 那它的實現是Topic。這里我們創建一個名為queueTextMsg的消息隊列。Destination destination = session.createQueue(queueName);// 5. 消息消費者MessageConsumer consumer = session.createConsumer(destination);// 6. 接收消息consumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message msg) {TextMessage message = (TextMessage) msg;try {System.out.println("接收: " + message.getText());} catch (JMSException e) {e.printStackTrace();}}});// 7. 啟動連接, 準備開始接收消息conn.start();} catch (JMSException e) {e.printStackTrace();}} }

10. 運行QueueTextMessageConsumer2.java, 沒有消息它會一直等待

11. 再次運行QueueTextMessageProducer.java, QueueTextMessageConsumer2.java接收到了QueueTextMessageProducer.java發送的消息, 而且QueueTextMessageConsumer2.java還處于等待接收消息狀態, 直到退出程序。

總結

以上是生活随笔為你收集整理的004_Queue消息模式发送文本消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。