ActiveMQ下載與安裝(消息中間件JMS)


下載

官方網站下載:http://activemq.apache.org/

1.3.2安裝(Linux

(1) apache-activemq-5.12.0-bin.tar.gz 上傳至服務器

(2) 解壓此文件

tar  zxvf  apache-activemq-5.12.0-bin.tar.gz

(3) apache-activemq-5.12.0目錄賦權

chmod 777 apache-activemq-5.12.0

(4) 進入apache-activemq-5.12.0\bin目錄

5)賦與執行權限

chmod 755 activemq 

------------------ 知識點小貼士 ----------------

linux 命令chmod 755的意思

chmod是Linux下設置文件權限的命令,后面的數字表示不同用戶或用戶組的權限。

一般是三個數字:
第一個數字表示文件所有者的權限
第二個數字表示與文件所有者同屬一個用戶組的其他用戶的權限
第三個數字表示其它用戶組的權限。

      權限分為三種:讀(r=4),寫(w=2),執行(x=1) 。 綜合起來還有可讀可執行(rx=5=4+1)、可讀可寫(rw=6=4+2)、可讀可寫可執行(rwx=7=4+2+1)。

      所以,chmod 755 設置用戶的權限為: 

1.文件所有者可讀可寫可執行                                    --7

2.與文件所有者同屬一個用戶組的其他用戶可讀可執行 --5 
3.其它用戶組可讀可執行                                          --5

1.3.3啟動

 ./activemq start

出現下列提示表示成功!

假設服務器地址為192.168.25.135 ,打開瀏覽器輸入地址

http://192.168.25.135:8161/ 即可進入ActiveMQ管理頁面

點擊進入管理頁面

輸入用戶名和密碼  均為 admin

進入主界面

點對點消息列表:

列表各列信息含義如下:

Number Of Pending Messages  等待消費的消息 這個是當前未出隊列的數量。

Number Of Consumers  消費者 這個是消費者端的消費者數量

Messages Enqueued  進入隊列的消息  進入隊列的總數量,包括出隊列的。

Messages Dequeued  出了隊列的消息  可以理解為是消費這消費掉的數量

 

2. JMS入門小Demo

2.1點對點模式

點對點的模式主要建立在一個隊列上面,當連接一個列隊的時候,發送端不需要知道接收端是否正在接收,可以直接向ActiveMQ發送消息,發送的消息,將會先進入隊列中,如果有接收端在監聽,則會發向接收端,如果沒有接收端接收,則會保存在activemq服務器,直到接收端接收消息,點對點的消息模式可以有多個發送端,多個接收端,但是一條消息,只會被一個接收端給接收到,哪個接收端先連上ActiveMQ,則會先接收到,而后來的接收端則接收不到那條消息

2.1.1消息生產者

1)創建工程jmsDemo ,引入依賴

   <dependency>

<groupId>org.apache.activemq</groupId>

<artifactId>activemq-client</artifactId>

<version>5.13.4</version>

 </dependency>

2)創建類QueueProducer  main方法代碼如下:

//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("歡迎來到神奇的品優購世界");

//8.發送消息

producer.send(textMessage);

//9.關閉資源

producer.close();

session.close();

connection.close();

上述代碼中第4步創建session  的兩個參數:

1個參數 是否使用事務

2個參數 消息的確認模式

·  AUTO_ACKNOWLEDGE = 1    自動確認

·  CLIENT_ACKNOWLEDGE = 2    客戶端手動確認   

·  DUPS_OK_ACKNOWLEDGE = 3    自動批量確認

·  SESSION_TRANSACTED = 0    事務提交並確認

運行后通過ActiveMQ管理界面查詢

2.1.2消息消費者

創建類QueueConsumer main方法代碼如下:

//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) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

//8.等待鍵盤輸入

System.in.read();

//9.關閉資源

consumer.close();

session.close();

connection.close();

執行后看到控制台輸出

 

 

 

2.1.3運行測試

同時開啟2個以上的消費者,再次運行生產者,觀察每個消費者控制台的輸出,會發現只有一個消費者會接收到消息。

2.2 發布/訂閱模式

2.2.1消息生產者

創建類TopicProducer main方法代碼如下:

//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();

運行效果如下:

2.2.2消息消費者

創建類TopicConsumer ,main方法代碼如下:

//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");

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) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

//8.等待鍵盤輸入

System.in.read();

//9.關閉資源

consumer.close();

session.close();

connection.close();

2.2.3運行測試

同時開啟2個以上的消費者,再次運行生產者,觀察每個消費者控制台的輸出,會發現每個消費者會接收到消息。

 

 

 

完畢!留個贊再走唄 (* ̄︶ ̄) !

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM