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