004_Queue消息模式发送文本消息
生活随笔
收集整理的這篇文章主要介紹了
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消息模式发送文本消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 003_ActiveMQ管理后台
- 下一篇: 005_Queue消息模式发送字节消息