企业级实战01_ActiveMQ 下载、安装、运行、实战需求
生活随笔
收集整理的這篇文章主要介紹了
企业级实战01_ActiveMQ 下载、安装、运行、实战需求
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ActiveMQ 下載、安裝、運行、實戰需求
文章目錄
- 一、ActiveMQ簡介
- 1. 什么是ActiveMQ?
- 2. ActiveMQ能干什么?
- 3. ActiveMQ特點
- 4. MOM基本功能
- 5. MOM主要特點
- 6. MOM的應用場景_前
- 7. MOM的應用場景_后
- 二、ActiveMQ下載/安裝
- 2.1 ActiveMQ下載
- 2.2 ActiveMQ安裝環境(jdk)
- 2.3 ActiveMQ 解壓縮/運行
- 2.4 ActiveMQ目錄介紹
- 2.5 ActiveMQ后臺頁面
- 三、ActiveMQ消息形式
- 3.1. 點對點(Point-to-Point)
- 3.2. 廣播TOPIC(publish-subscribe)
- 四、ActiveMQ消息類型
- 五、基礎創建流程+代碼構建
- 5.1. MQ基礎流程總覽
- 5.2. MQ_點對點_代碼案例
- 5.2.1. MQ_點對點_生產者_圖示
- 5.2.2. MQ_點對點_生產者_代碼
- 5.2.3. MQ_點對點_消費者_圖示
- 5.2.4. MQ_點對點_消費者_代碼
- 5.3. MQ_TOPIC_代碼案例
- 5.3.1. MQ_廣播_生產者_圖示
- 5.3.2. MQ_廣播_生產者_代碼
- 5.3.3. MQ_廣播_生產者_圖示
- 5.3.4. MQ_廣播_生產者_代碼
- 六、實戰ActiveMQ
- 6.1. 解壓ActiveMQ/附目錄權限/啟動
- 6.2. 關閉防火墻或者開放8161端口(任選1種)
- 6.2.1. 關閉防火墻
- 6.2.2. 開放8161端口
- 6.3. 登錄后臺
- 七、點對點_實戰發送/接收消息_場景01
- 7.1. 創建一個maven項目
- 7.2. 引入依賴
- 7.3. 創建一個點對點的生產者
- 7.4. 創建一個點對點的消費者
- 7.5. 啟動生產者
- 7.5.1. 運行main方法即可
- 7.5.2. Connection timed out: connect
- 7.5.3. 解決方案
- 7.5.4. 再次啟動項目
- 7.5.5. 查看MQ控制臺
- 7.5.6. MQ名稱講解
- 7.6. 啟動消費者
- 八、點對點_實戰發送/接收消息_場景2
- 8.1. 啟動一個生產者,投遞一次消息
- 8.2. 啟動消費者1號
- 8.3. 啟動消費者2號
- 8.3. 現象分析/總結
- 8.4. 總結
- 8.5. 效果圖:
- 九、廣播_實戰發送/接收消息_場景02
- 9.1. 創建一個topic的生產者
- 9.2. 創建一個topic的消費者
- 9.3. 啟動一個生產者
- 9.4. 登錄后臺查看
- 9.5. 數據展示
- 9.6. 啟動消費者1號和消費者2號
- 9.7. 結果分析
- 9.8. topic 廣播形式,如果先啟動生產者在啟動消費者,消息失效會丟失
- 9.9. 再次測試
- 十、總結歸納
一、ActiveMQ簡介
1. 什么是ActiveMQ?
2. ActiveMQ能干什么?
3. ActiveMQ特點
4. MOM基本功能
5. MOM主要特點
6. MOM的應用場景_前
7. MOM的應用場景_后
二、ActiveMQ下載/安裝
2.1 ActiveMQ下載
官網鏈接:http://activemq.apache.org/download.html
2.2 ActiveMQ安裝環境(jdk)
2.3 ActiveMQ 解壓縮/運行
2.4 ActiveMQ目錄介紹
2.5 ActiveMQ后臺頁面
三、ActiveMQ消息形式
3.1. 點對點(Point-to-Point)
3.2. 廣播TOPIC(publish-subscribe)
四、ActiveMQ消息類型
五、基礎創建流程+代碼構建
5.1. MQ基礎流程總覽
5.2. MQ_點對點_代碼案例
5.2.1. MQ_點對點_生產者_圖示
5.2.2. MQ_點對點_生產者_代碼
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class QueueProducer {public static void main(String[] args) throws JMSException {//1.創建連接工廠ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建隊列對象Queue queue = session.createQueue("test-queue");//6.創建消息生產者對象MessageProducer producer = session.createProducer(queue);//7.創建消息對象(文本消息)TextMessage textMessage = session.createTextMessage("歡迎來到神奇的gblfy世界");//8.發送消息producer.send(textMessage);//9.關閉資源producer.close();session.close();connection.close();} }5.2.3. MQ_點對點_消費者_圖示
5.2.4. MQ_點對點_消費者_代碼
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*; import java.io.IOException;public class QueueConsumer {public static void main(String[] args) throws JMSException, IOException {//1.創建連接工廠ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建隊列對象Queue queue = session.createQueue("test-queue");//6.創建消息消費者對象MessageConsumer consumer = session.createConsumer(queue);//7.設置監聽consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage=(TextMessage)message;try {System.out.println("提取的消息:"+ textMessage.getText() );} catch (JMSException e) { e.printStackTrace();}}});//8.等待鍵盤輸入System.in.read();//9.關閉資源consumer.close();session.close();connection.close();}}5.3. MQ_TOPIC_代碼案例
5.3.1. MQ_廣播_生產者_圖示
5.3.2. MQ_廣播_生產者_代碼
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*; /*** 發布訂閱模式(消息生產者)* @author gblfy**/ public class TopicProducer {public static void main(String[] args) throws JMSException {//1.創建連接工廠ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建主題對象Topic topic = session.createTopic("test-topic"); //6.創建消息生產者對象MessageProducer producer = session.createProducer(topic);//7.創建消息對象(文本消息)TextMessage textMessage = session.createTextMessage("歡迎來到申請的品優購世界");//8.發送消息producer.send(textMessage);//9.關閉資源producer.close();session.close();connection.close();}}5.3.3. MQ_廣播_生產者_圖示
5.3.4. MQ_廣播_生產者_代碼
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*; import java.io.IOException;public class TopicConsumer {public static void main(String[] args) throws JMSException, IOException {//1.創建連接工廠ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建主題對象Topic topic = session.createTopic("test-topic");//6.創建消息消費者對象MessageConsumer consumer = session.createConsumer(topic);//7.設置監聽consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage = (TextMessage) message;try {System.out.println("提取的消息:" + textMessage.getText());} catch (JMSException e) {e.printStackTrace();}}});//8.等待鍵盤輸入System.in.read();//9.關閉資源consumer.close();session.close();connection.close();} }六、實戰ActiveMQ
6.1. 解壓ActiveMQ/附目錄權限/啟動
- (1)將apache-activemq-5.12.0-bin.tar.gz 上傳至服務器
- (2)解壓此文件
- (3)為apache-activemq-5.12.0目錄賦權
- (4)進入apache-activemq-5.12.0\bin目錄
- (5)賦與執行權限
- (6)啟動mq
6.2. 關閉防火墻或者開放8161端口(任選1種)
6.2.1. 關閉防火墻
/etc/init.d/iptables stop6.2.2. 開放8161端口
vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8161 -j ACCEPT :wq service iptables restart service iptables status
6.3. 登錄后臺
七、點對點_實戰發送/接收消息_場景01
7.1. 創建一個maven項目
7.2. 引入依賴
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.gblfy.jms</groupId><artifactId>jmsDemo</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client</artifactId><version>5.13.4</version></dependency></dependencies></project>7.3. 創建一個點對點的生產者
//1.創建連接工廠ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建隊列對象Queue queue = session.createQueue("test-queue");//6.創建消息生產者對象MessageProducer producer = session.createProducer(queue);//7.創建消息對象(文本消息)TextMessage textMessage = session.createTextMessage("歡迎來到神奇的gblfy世界");//8.發送消息producer.send(textMessage);//9.關閉資源producer.close();session.close();connection.close();}7.4. 創建一個點對點的消費者
//1.創建連接工廠ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建隊列對象Queue queue = session.createQueue("test-queue");//6.創建消息消費者對象MessageConsumer consumer = session.createConsumer(queue);//7.設置監聽consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage=(TextMessage)message;try {System.out.println("提取的消息:"+ textMessage.getText() );} catch (JMSException e) { e.printStackTrace();}}});//8.等待鍵盤輸入System.in.read();//9.關閉資源consumer.close();session.close();connection.close();}7.5. 啟動生產者
7.5.1. 運行main方法即可
7.5.2. Connection timed out: connect
7.5.3. 解決方案
- 關閉防火墻,或者開放61616端口
過程上面一樣,如果開發防火墻,記得要重啟防火墻!!!
7.5.4. 再次啟動項目
7.5.5. 查看MQ控制臺
- 點擊Queues
發現消息已經成功發送成功!!!
7.5.6. MQ名稱講解
- ① 隊列名
- ② 未消費消息數量
- ③ 活躍的消費者數量
- ④ 一共投遞消息總量
- ⑤消費消息數量
- ⑥ atom,可以查看具體消息
- ⑦ 刪除消息按鈕
7.6. 啟動消費者
消費者已經成功接收到投遞的消息
查看后臺MQ后臺:
| 未消費的消息 | 0 |
| 活躍消費者 | 1 |
| 消息投遞總量 | 1 |
| 已經消費消息 | 1 |
八、點對點_實戰發送/接收消息_場景2
8.1. 啟動一個生產者,投遞一次消息
啟動一個生產者,投遞一次消息,啟動2個消費者8.2. 啟動消費者1號
8.3. 啟動消費者2號
8.3. 現象分析/總結
只有消費者2號,接收到生產者投遞的消息
8.4. 總結
不管有多少消費者,消息只能被一個接收,消費了也就沒了,先來先得
8.5. 效果圖:
| 隊列 | 1 |
| 未消費消息 | 0 |
| 活躍消費者 | 2 |
| 投遞消息總量 | 2 |
| 消費消息數量 | 2 |
注:此次測試建立在剛才第一次測試基礎上
正常如下:
| 隊列 | 1 |
| 未消費消息 | 0 |
| 活躍消費者 | 2 |
| 投遞消息總量 | 1 |
| 消費消息數量 | 1 |
九、廣播_實戰發送/接收消息_場景02
9.1. 創建一個topic的生產者
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*; /*** 發布訂閱模式(消息生產者)* @author gblfy**/ public class TopicProducer {public static void main(String[] args) throws JMSException {//1.創建連接工廠ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建主題對象Topic topic = session.createTopic("test-topic"); //6.創建消息生產者對象MessageProducer producer = session.createProducer(topic);//7.創建消息對象(文本消息)TextMessage textMessage = session.createTextMessage("歡迎來到申請的品優購世界");//8.發送消息producer.send(textMessage);//9.關閉資源producer.close();session.close();connection.close();}}9.2. 創建一個topic的消費者
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*; import java.io.IOException;public class TopicConsumer {public static void main(String[] args) throws JMSException, IOException {//1.創建連接工廠ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");//2.創建連接Connection connection = connectionFactory.createConnection();//3.啟動連接connection.start();//4.獲取session(會話對象) 參數1:是否啟動事務 參數2:消息確認方式Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.創建主題對象Topic topic = session.createTopic("test-topic");//6.創建消息消費者對象MessageConsumer consumer = session.createConsumer(topic);//7.設置監聽consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage = (TextMessage) message;try {System.out.println("提取的消息:" + textMessage.getText());} catch (JMSException e) {e.printStackTrace();}}});//8.等待鍵盤輸入System.in.read();//9.關閉資源consumer.close();session.close();connection.close();} }9.3. 啟動一個生產者
9.4. 登錄后臺查看
9.5. 數據展示
| 活躍消費者數量 | 0 |
| 消息投遞總量 | 1 |
| 已消費消息 | 0 |
9.6. 啟動消費者1號和消費者2號
9.7. 結果分析
發現消費者1號和消費者2號都沒有接收到消息
9.8. topic 廣播形式,如果先啟動生產者在啟動消費者,消息失效會丟失
因此,需要先啟動消費者在啟動生產者,再啟動生產者。
9.9. 再次測試
從截圖中可以看出,生產者投遞一次消息,2個消費者都可以接收到消息
十、總結歸納
MQ的需要根據應用的業務場景,選擇不同的消息投遞方式,一次的選擇點對點,消息同一個,有多個消費者的選擇廣播形式。
總結
以上是生活随笔為你收集整理的企业级实战01_ActiveMQ 下载、安装、运行、实战需求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业实战(Jenkins+GitLab+
- 下一篇: 工具类集和_gblfy版本