ActiveMQ 消息管理(機制)

ActiveMQ簡介

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

JMS 簡介

  • JMS(Java Message Service),即:java消息服務應用程序接口。
  • 是Java平臺面向消息中間件(MOM)的API/技術規範。
  • 場景:應用與兩個應用程序之間,或者分佈式系統架構中分發消息,可進行異步/同步方式的通訊,和平臺API無關,基本多數的MOM都提供對JMS的支持

JMS 體系架構

  • JMS提供者

    連接面向消息中間件的,JMS接口的一個實現。提供者可以是Java平臺的JMS實現,也可以是非Java平臺的面向消息中間件的適配器。

  • JMS客戶

    生產或消費基於消息的Java的應用程序或對象。

  • JMS生產者

    創建併發送消息的JMS客戶。

  • JMS消費者

    接收消息的JMS客戶。

  • JMS消息

    包括可以在JMS客戶之間傳遞的數據的對象。

  • JMS隊列

    一個容納那些被髮送的等待閱讀的消息的區域。與隊列名字所暗示的意思不同,消息的接受順序並不一定要與消息的發送順序相同。一旦一個消息被閱讀,該消息將被從隊列中移走。

  • JMS主題

    一種支持發送消息給多個訂閱者的機制。

JMS 屬性

  • Destination(接口/目標)
  • Product(生產者)
  • Consumer(消費者)
  • Broker(消息轉發器)
  • P2P,Pub/Sub(模型)
  • P2P:消息隊列(Queue)、發送者(Sender)、接收者(Receiver)

    Pub/Sub:主題(Topic)、發佈者(Publisher)、訂閱者(Subscriber)
    

ActiveMQ與JMS關係

JMS是一種規範
ActiveMQ是JMS規範的一種實現

AvtiveMQ架構圖

ActiveMQ主要特性

(1)JMS1.1、J2EE1.4
(2)J2EE servers(Tomcat,JBoss4,GlassFish,WebLogic…)
(3)多語言客戶端(Java,C,C++,C#,Ruby,PhP)
(4)多種協議(VM,TCP,SSL,UDP,multicast,JGroups…)
(5)Spring
(6)Ajax
(7)CXF,Axis(WebService的兩個流行的框架)
(8)REST(狀態傳遞)
(9)Message Groups,Virtual Destinations,Wildcards,Composite , Destinations
(10)持久化(journal,JDBC)
(11)性能(client-server,cluster,peer…)

ActiveMQ功能

- 多種協議
- 持久化
- 安全
- 集羣
- 監控
- 其他

AvtiveMQ多種協議

URI: scheme:scheme-specific-part

eg:

VM vm://brokername 
TCP tcp://host:port 
SSL ssl://host:port 
HTTP http://host:port 
UDP udp://host:port 
peer   peer://group/brokername 
multicast multicast://IPAddress
static static(list uris) 
failover failvoer(list uris)
discovery discovery://host:port

ActiveMQ持久化

日誌:

<journaledJDBC journalLogFiles="5"dataDirectory="../mq-data" />

數據庫:

包括: Derby,HSQL,MySQL,SQLServer, Sybase,DB2,Oracle…
<journaledJDBC  dataSource="#mysql-ds"/>

ActiveMQ安全

認證

simpleAuthenticationPlugin
jaasAuthenticationPlugin

授權

authorizationPlugin

ActiveMQ集羣

  • Master/Slave

  • Network of Brokers

ActiveMQ監控

  • JMX(Java管理擴展框架)

  • Advisory Message(通知消息)

Queue與Topic區別

使用ActiveMQ作爲實現JMS中間件優點

1.多種語言和協議編寫客戶端。語言: Java, C, C++, C#, Python, PHP。
2.完全支持JMS1.1和J2EE 1.4規範 (持久化,XA消息,事務)
3.對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統裏面去,而且也支持Spring2.0的特性
4.完全支持JMS1.1和J2EE 1.4規範 (持久化,XA消息,事務)
5.通過了常見J2EE服務器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上
6.支持多種傳送協議
7.從設計上保證了高性能的集羣,客戶端-服務器,點對點
8.支持Ajax
9.支持與Axis的整合
10.可以很容易得調用內嵌JMS provider,進行測試

ActiveMQ關鍵詞

  • ActiveMQConnectionFactory:

    實現了jms的ConnectionFactory,Connection的工廠類 
    
  • Connection :

    JMS連接,和Java連接池的Connection差不多  Producer和Consumer用來和Broker通訊的 
    
  • Session :

    會話 
    
  • Destination :

    目的地,數據要發送到哪裏或者從哪裏取 
    
  • MessageProducer:

    生產者 
    
  • MessageConsumer :

    消費者 
    
  • Message :

    消息,add到隊列的東西,也就是自己要處理的東西,Message有很多子接口,TextMessage或ByteMessage
    

ActiveMQ目錄說明

bin:存放的是腳本文件
conf :存放的是基本配置文件     
data :存放的是日誌文件
docs :存放的是說明文檔
examples :存放的是簡單的實例
lib :存放的是activemq所需jar包
webapps :用於存放項目的目錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章