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 :用於存放項目的目錄