JmsProduceTopicPersist
public class JmsProduceTopicPersist {
public static final String ACTIVEMQ_URL = "tcp://192.168.150.128:61616";
public static final String TOPIC_NAME = "topic01";
public static void main(String[] args) throws JMSException {
// 1、創建連接工廠 按照給定的url地址,採用默認的用戶名和密碼
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
// 2、通過連接工廠,獲得連接Connection
Connection connection = activeMQConnectionFactory.createConnection();
// 3、創建會話session
// 兩個參數,第一個叫事務/第二個叫簽收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 4、創建目的地(具體是隊列還是主體topic)
Topic queue = session.createTopic(TOPIC_NAME);
// 5、創建消息的生產者
MessageProducer producer = session.createProducer(queue);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
connection.start();
// 6、通過使用producer 生產3條消息發送到mq的隊列裏面
for (int i = 0; i < 6; i++) {
// 7、創建消息,好比快遞
TextMessage textMessage = session.createTextMessage("msg——》" + i);// 理解爲一個字符串
// textMessage.setJMSMessageID("11312");
// 8、通過producer發送給mq
producer.send(textMessage);
}
// 9、關閉資源
producer.close();
session.close();
connection.close();
System.out.println("消息發送到mq完成");
}
}
JmsConsumeTopicPersist
public class JmsConsumeTopicPersist {
public static final String ACTIVEMQ_URL = "tcp://192.168.150.128:61616";
public static final String TOPIC_NAME = "topic01";
public static void main(String[] args) throws Exception {
System.out.println("我是2號");
// 1、創建連接工廠 按照給定的url地址,採用默認的用戶名和密碼
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
// 2、通過連接工廠,獲得連接Connection
Connection connection = activeMQConnectionFactory.createConnection();
connection.setClientID("ss");
// 3、創建會話session
// 兩個參數,第一個叫事務/第二個叫簽收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 4、創建目的地(具體是隊列還是主體topic)
Topic topic = session.createTopic(TOPIC_NAME);
TopicSubscriber durableSubscriber = session.createDurableSubscriber(topic, "reee...");
connection.start();
Message message = durableSubscriber.receive();
System.out.println("初步消息" + message);
while (null != message) {
TextMessage message1 = (TextMessage) message;
System.out.println("收到的" + message1.getText());
message = durableSubscriber.receive();
}
session.close();
connection.close();
/**
* 1、一定要先運行一次消費者,等於向MQ註冊,類似我訂閱了這個主題。
* 2、然後再運行生產者發送信息。此時,無論消費者是否在線,都會接收到,不在線的話,下次連接的時候,會把沒有收過的消息都接收下來
*/
}
}
事務 JmsProduceTopicTransaction
public class JmsProduceTopicTransaction {
public static final String ACTIVEMQ_URL = "tcp://192.168.150.128:61616";
public static final String TOPIC_NAME = "topic01";
public static void main(String[] args) throws JMSException {
// 1、創建連接工廠 按照給定的url地址,採用默認的用戶名和密碼
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
// 2、通過連接工廠,獲得連接Connection
Connection connection = activeMQConnectionFactory.createConnection();
// 3、創建會話session
// 兩個參數,第一個叫事務/第二個叫簽收
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 4、創建目的地(具體是隊列還是主體topic)
Topic queue = session.createTopic(TOPIC_NAME);
// 5、創建消息的生產者
MessageProducer producer = session.createProducer(queue);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
connection.start();
// 6、通過使用producer 生產3條消息發送到mq的隊列裏面
for (int i = 0; i < 6; i++) {
// 7、創建消息,好比快遞
TextMessage textMessage = session.createTextMessage("msg——》" + i);// 理解爲一個字符串
// textMessage.setJMSMessageID("11312");
// 8、通過producer發送給mq
producer.send(textMessage);
}
// 9、關閉資源
producer.close();
// 沒有的話 消息會被重複消費 會很混亂
session.commit();
session.close();
connection.close();
System.out.println("消息發送到mq完成");
}
}