ActiveMQ是由Apache出品的,一款最流行的,能力強勁的開源消息總線。ActiveMQ是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,它非常快速,支持多種語言的客戶端和協議,而且可以非常容易的嵌入到企業的應用環境中,並有許多高級功能。
MQ
首先簡單的介紹一下MQ,MQ英文名MessageQueue,中文名也就是大家用的消息隊列,幹嘛用的呢,說白了就是一個消息的接受和轉發的容器,可用於消息推送。
下面介紹一下ActiveMQ的消息隊列模型
1、 Point-to-Point(P2P)
2、 Publish/Subscribe(Pub/Sub)
P2P
- 涉及到的概念
①消息隊列(Queue)
②發送者(Sender)
③接收者(Receiver)
④每個消息都被髮送到一個特定的隊列,接收者從隊列中獲取消息。
隊列保留着消息,直到他們被消費或超時。
- P2P的特點
①每個消息只有一個消費者(Consumer)(即一旦被消費,消息就不再在消息隊列中)
②發送者和接收者之間在時間上沒有依賴性,也就是說當發送者發送了消息之後,
不管接收者有沒有正在運行,它不會影響到消息被髮送到隊列
③接收者在成功接收消息之後需向隊列應答成功
如果你希望發送的每個消息都應該被成功處理的話,那麼你需要P2P模式。
Pub/Sub
- 涉及到的概念
①主題(Topic)
②發佈者(Publisher)
③訂閱者(Subscriber)
客戶端將消息發送到主題。多個發佈者將消息發送到Topic,系統將這些消息傳遞給多個訂閱者。
- Pub/Sub的特點
①每個消息可以有多個消費者。
②發佈者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者。
它必須創建一個訂閱者之後,才能消費發佈者的消息,而且爲了消費消息,訂閱者必須保持運行的狀態。
③爲了緩和這樣嚴格的時間相關性,JMS允許訂閱者創建一個可持久化的訂閱。
這樣,即使訂閱者沒有被激活(運行),它也能接收到發佈者的消息。
如果你希望發送的消息可以不被做任何處理、或者被一個消息者處理、
或者可以被多個消費者處理的話,那麼可以採用Pub/Sub模型
消息中間件有很多的用途和優點:
1. 將數據從一個應用程序傳送到另一個應用程序,或者從軟件的一個模塊傳送到另外一個模塊。
2. 負責建立網絡通信的通道,進行數據的可靠傳送。
3. 保證數據不重發,不丟失。
4. 能夠實現跨平臺操作,能夠爲不同操作系統上的軟件集成技工數據傳送服務。
下載ActiveMQ
官方網站:http://activemq.apache.org/
本文中使用的是apache-activemq-5.13.2 Windows版。
從它的目錄來說,還是很簡單的:
bin存放的是腳本文件
conf存放的是基本配置文件
data存放的是日誌文件
docs存放的是說明文檔
examples存放的是簡單的實例
lib存放的是activemq所需jar包
webapps用於存放項目的目錄
啓動ActiveMQ
我們瞭解activemq的基本目錄,下面我們運行一下activemq服務。
雙擊bin目錄下的activemq.bat腳本文件或運行自己電腦版本下的activemq.bat。
測試
ActiveMQ默認使用的TCP連接端口是61616, 通過查看該端口的信息可以測試ActiveMQ是否成功啓動 netstat -an|find “61616”
C:\Users>netstat -an|find "61616"
TCP 0.0.0.0:61616 0.0.0.0:0 LISTENING
TCP [::]:61616 [::]:0 LISTENING
監控
ActiveMQ默認啓動時,啓動了內置的jetty服務器,提供一個用於監控ActiveMQ的admin應用。
admin:http://127.0.0.1:8161/admin/
用戶名和密碼都是admin
至此,服務端啓動完畢
停止服務器,只需要按着Ctrl+Shift+C,之後輸入y即可。
文章參考:
http://blog.csdn.net/jiuqiyuliang/article/details/47160259
ActiveMQ簡單的HelloWorld實例:
http://blog.csdn.net/jiuqiyuliang/article/details/48608237
Spring和ActiveMQ整合的完整實例