ActiveMQ學習筆記

jopen 12年前發布 | 75K 次閱讀 ActiveMQ 消息系統

1. 基礎概念

ActiveMQ:是Apache出品,最流行的,能力強勁的開源消息總線。是一個完全支持JMS1.1J2EE 1.4規范的 JMS Provider實現。

JMSJava消息服務)是一個Java平臺中關于面向消息中間件(MOM)的API,用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。

2. JMS消息模式

1) 點對點或隊列模式

  每個消息只能有一個消費者。消息的生產者和消費者之間沒有時間上的相關性,無論消費者在生產者發送消息的時候是否處于運行狀態,它都可以提取消息。

ActiveMQ學習筆記

2) Pub/Sub 發布/訂閱模式

每個消息可以有多個消費者。生產者和消費者之間有時間上的相關性。訂閱一個主題的消費者只能消費自它訂閱之后發布的消息。

3. Broker節點

代表一個運行MQ節點。

4. Transport傳輸方式

ActiveMQ目前支持的TransportVM TransportTCP TransportNIO TransportSSL TransportPeer TransportUDP TransportMulticast TransportHTTP and HTTPS TransportWebSockets TransportFailover TransportFanout TransportDiscovery TransportZeroConf Transport等。

1) VM Transport:允許客戶端和Broker直接VM內部通信,采用的連接不是Socket連接,而是直接的方法調用,從而避免了網絡傳輸的開銷。應用場景也僅限于Broker和客戶端在同一JVM環境下。

2) TCP Transport:客戶端通過TCP Socket連接到遠程Broker配置語法:

tcp://hostname:port?transportOptions

3) HTTP and HTTPS Transport:允許客戶端使用REST或者Ajax的方式進行連接。這意味著可以直接使用JavascriptActiveMQ發送消息。

4) WebSockets Transport:允許客戶端通過HTML5標準的WebSockets方式連接到Broker

5) Failover Transport:青龍系統MQ采用的就是這種連接方式。這種方式具備自動重新連接的機制,工作在其他Transport的上層,用于建立可靠的傳輸。允許配置任意多個的URI,該機制將會自動選擇其中的一個URI來嘗試連接。配置語法:

failover:(tcp://localhost:61616,tcp://localhost:61617,.....)?transportOptions

6) Fanout Transport:主要適用于生產消息發向多個代理。如果多個代理出現環路,可能造成消費者接收重復的消息。所以,使用該協議時,最好將消息發送給多個不相連接的代理。

5. Persistence持久化存儲

1) AMQ Message Store

ActiveMQ 5.0 的缺省持久化存儲方式。

2) Kaha Persistence

是一個專門針對消息持久化的解決方案。它對典型的消息使用模式進行了優化。

3) JDBC Persistence

目前支持的數據庫有Apache Derby, Axion, DB2, HSQL, Informix, MaxDB, MySQL, Oracle, Postgresql, SQLServer, Sybase

4) Disable Persistence

不應用持久化存儲。

6. 集群方案

1. Master / Slave

1.1. Pure Master Slave

無單點故障;

不需要依賴共享文件系統或是共享數據庫,使用 KahaDB的方式持久化存儲;

一個Master只能帶一個Slave

Master工作期間,會將消息狀況自動同步到Slave

Master一旦崩潰,Slave自動接替其工作,已發送并尚未消費的消息繼續有效;

Slave接手后,必須停止Slave才能重啟先前的Master

1.2. Shared File System Master Slave

1.3. JDBC Master Slave

配置上,不存在MasterSlave的區分,多個共享數據源的Broker構成JDBC Master Slave

首先搶到資源(數據庫鎖)的Broker成為Master,其他Broker定期嘗試搶占資源;

一旦Master崩潰,其他Broker搶占資源,最終只有一臺搶到,立刻成為Master,之前的Master即便重啟成功,也只能作為Slave等待;

7. 延伸鏈接

1. ActiveMQ  http://activemq.apache.org/

2. Metamorphosis (MetaQ)  http://metaq.taobao.org/

淘寶開源分布式消息中間件,在淘寶和支付寶有著廣泛應用。

3. DotNetMQ

基于C#.NET框架的開源消息隊列系統。

4. JBoss Messaging  http://www.jboss.org/jbossmessaging/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!