ActiveMQ使用詳解---相關概念


一、前言

  公司之前使用activeMQ做過一款用於系統之間傳遞信息的工具,最近才正式投入生產使用,這期間出現了一些比較奇怪的問題,最終發現是沒有清晰的了解activeMQ的相關配置以及一些相關概念,借着這次機會,深入的對activeMQ進行一次剖析,也希望對看官有一定的幫助~

二、正文

  ActiveMQ:是Apache出品,最流行的,能力強勁的開源消息總線。是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現。JMS(Java消息服務):是一個Java平台中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。

2.1 JMS消息模式

  2.1.1 點對點或隊列模式

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

      ActiveMQ學習筆記

     2.1.2 Pub/Sub 發布/訂閱模式

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

2.2 Broker節點

   代表一個運行MQ的節點。

2.3 Transport傳輸方式

  ActiveMQ目前支持的Transport有:VM Transport、TCP Transport、NIO Transport、SSL Transport、Peer Transport、UDP Transport、Multicast Transport、HTTP and HTTPS Transport、WebSockets Transport、Failover Transport、Fanout Transport、Discovery Transport、ZeroConf Transport等。

  2.3.1 VM Transport

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

  2.3.2 TCP Transport

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

  tcp://hostname:port?transportOptions

  2.3.3 HTTP and HTTPS Transport

  允許客戶端使用REST或者Ajax的方式進行連接。這意味着可以直接使用Javascript向ActiveMQ發送消息。

  2.3.4 WebSockets Transport

      允許客戶端通過HTML5標准的WebSockets方式連接到Broker。

  2.3.5 Failover Transport

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

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

  2.3.6 Fanout Transport

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

2.4 Persistence持久化存儲

  2.4.1 AMQ Message Store

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

  2.4.2 Kaha Persistence

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

  2.4.3 JDBC Persistence

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

  2.4.4 Disable Persistence

  不應用持久化存儲。

2.5 集群方案

  2.5.1 Pure Master Slave

  無單點故障;

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

  一個Master只能帶一個Slave;

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

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

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

 2.5.2 Shared File System Master Slave

   2.5.3 JDBC Master Slave

  配置上,不存在Master和Slave的區分,多個共享數據源的Broker構成JDBC Master Slave,首先搶到資源(數據庫鎖)的Broker成為Master,其他Broker定期嘗試搶占資源,一旦Master崩潰,其他Broker搶占資源,最終只有一台搶到,立刻成為Master,之前的Master即便重啟成功,也只能作為Slave等待;

三、引用

  “正文”部分轉自:http://blog.csdn.net/xiaobai51509660/article/details/32695965

      如對博文有疑問或者建議,歡迎加Q探討:1163142850


免責聲明!

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



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