006_Topic消息模式发送对象消息
生活随笔
收集整理的這篇文章主要介紹了
006_Topic消息模式发送对象消息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 新建一個名為JMSActiveMQObjectMessage的Java項目, 同時拷入相關jar包
2. 編輯User.java
package com.jms.activemq.tom;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = 1L;private String userName;private String password;public User() {}public User(String userName, String password) {this.userName = userName;this.password = password;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User [userName=" + userName + ", password=" + password + "]";}}3. 編輯TopicObjectMessageProducer.java
package com.jms.activemq.tom;import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Session; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;public class TopicObjectMessageProducer {// 默認連接用戶名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默認用戶密碼private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 默認連接地址private static final String dftUrl = ActiveMQConnection.DEFAULT_BROKER_URL;// 隊列名稱private static final String topicName = "topicObjMsg";public static void main(String[] args) {// 1. 創建一個連接工廠ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);// 設置所有對所有序列化包都信任cf.setTrustAllPackages(true);// 連接對象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。這里我們創建一個名為topicObjMsg的主題。Destination destination = session.createTopic(topicName);// 6. 消息生產者MessageProducer producer = session.createProducer(destination);// 7. 創建文本消息和發送消息ObjectMessage message = session.createObjectMessage();message.setObject(new User("zhangsan", "123456"));producer.send(message);System.out.println("發送: " + message.getObject());} 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. 編輯TopicObjectMessageConsumer.java
package com.jms.activemq.tom;import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.ObjectMessage; import javax.jms.Session; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;public class TopicObjectMessageConsumer {// 默認連接用戶名private static final String dftUsr = ActiveMQConnection.DEFAULT_USER;// 默認用戶密碼private static final String dftPwd = ActiveMQConnection.DEFAULT_PASSWORD;// 默認連接地址private static final String dftUrl = ActiveMQConnection.DEFAULT_BROKER_URL;// 隊列名稱private static final String topicName = "topicObjMsg";public static void main(String[] args) {// 1. 創建一個連接工廠ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(dftUsr, dftPwd, dftUrl);// 設置所有對所有序列化包都信任cf.setTrustAllPackages(true);// 連接對象Connection conn = null;// 會話對象Session session = null;try {// 2. 創建連接conn = cf.createConnection();// 3. 創建會話session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);// 4. 創建消息目的地。如果是點對點, 那么它的實現是Queue; 如果是訂閱模式, 那它的實現是Topic。這里我們創建一個名為topicObjMsg的主題。Destination destination = session.createTopic(topicName);// 5. 消息消費者MessageConsumer consumer = session.createConsumer(destination);// 6. 接收消息consumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message msg) {try {User user = (User) ((ObjectMessage) msg).getObject();System.out.println("接收: " + user);} catch (JMSException e) {e.printStackTrace();}}});// 7. 啟動連接, 準備開始接收消息conn.start();} catch (JMSException e) {e.printStackTrace();}} }5. 運行TopicObjectMessageConsumer.java, 等待接收消息
6. 運行TopicObjectMessageProducer.java
7. TopicObjectMessageConsumer.java接收到消息, 并且繼續等待接收消息, 直到退出應用程序。
8. 查看后臺管理
總結
以上是生活随笔為你收集整理的006_Topic消息模式发送对象消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 005_Queue消息模式发送字节消息
- 下一篇: 007_JMS中的持久订阅