ActiveMQ

Apache ActiveMQ入門

李宗霖 2018/12/27 11:00:55
10061

Apache ActiveMQ入門


簡介

簡單介紹ActiveMQ的相關基礎

作者

李宗霖


一、什麼是ActiveMQ

在介紹ActiveMQ之前,首先先來簡單介紹兩個東西:MOM 與 JMS:

MOM:訊息導向中介軟體(Message-Oriented Middleware, MOM)是一種可非同步、鬆散耦合、可靠性高、安全性高,用來處理並傳遞訊息的軟體。

JMS:是一種定義了訊息的建立、發送、接收等標準的API,JMS有兩種消息傳遞方式Publish-Subscribe與Point-to-Point,其差異後面會介紹。

而ActiveMQ便是一種由Apache開發,遵循了JMS規範並有高擴展性的開源MOM

 

二、消息傳遞方式

1.Publish-Subscribe(發布/訂閱模式)

可以有多個發送端(發布)與多個接收端(訂閱),ActiveMQ使用topic接收他從發送端接收到的消息並發給所有的接收者。須注意的是此模式須先啟動接收端再啟動發送端,當發送端傳給topic時,若接收端未啟動則不會接收到該消息。消息不會保留,也就是發送時沒接收到就算之後再開啟接收端依然收不到那個消息。

2.Point-to-Point(點對點模式)

一樣可以有多個發送端與接收端,ActiveMQ使用Queue接收消息,可同步或非同步傳遞消息且一個消息只會有一個接收端去接收,若前面的接收端先接收了消息後面的接收端便接收不到該消息。消息會保留,也就是當發送端發送消息進Queue時,若沒有監聽的接收端則該消息會存放在ActiveMQ上,直到有監聽的接收端接收消息。

 

三、ActiveMQ安裝

前往http://activemq.apache.org/download.html下載。執行\bin\win64\bin.bat(以下範例使用windows 64位元環境執行),運行後再網址列輸入http://localhost:8161/admin

預設帳密為admin/admin登入後便可看到管理頁面的首頁

 

四、實作範例(以Point-To-Point為例)

1.發送

 

2.接收

 

3.執行

先執行生產者(發送)程式,然後至管理頁首頁點擊Queues即可看到剛剛建立的Queue
 
Number Of Pending Messages:已生產並未處理的消息
Number Of Consumers:運行中的消費者(接收)
Messages Enqueued:已進入隊列中的消息數
Messages Dequeued:處理完畢的消息數
Browse:顯示目前排隊中的消息
 
 
然後執行消費者程式
可以看到 Number Of Consumers 變為 1、 Messages Dequeued 變為 5。
 
 

五、結論

1.以上只用一個簡單的例子稍微介紹ActiveMQ的主要功能,除此之外還有許多沒有使用、未提及的功能,如設定同步/非同步,持久化等。
2.鬆散耦合、可非同步的特性也可使程式之間不會因為一方有錯誤而導致其他被拖累。
3.ActiveMQ是純JAVA程式,因此只要環境可執行JAVA就可使用ActiveMQ。
4.支援的程式語言除了JAVA外還有其他眾多語言。
 
若有需要使用MOM,不訪試試由apache所提供的ActiveMQ吧!
李宗霖