ActiveMQ入門到精通-ActiveMQ簡介

一、ActiveMQ簡介

1 消息中間件

傳統消息通知技術的侷限性:

(1)同步通信,客戶發出調用後,必須等待服務對象完成處理並返回結果後才能繼續執行。

(2)客戶和服務對象的生命週期緊密耦合,客戶進程和服務對象進程都必須正常運行,如果由於服務對象崩潰或者網絡故障導致客戶的請求不可達,客戶會接收到異常。

(3)點對點通信,客戶的一次調用只發送給某個單獨的目標對象。

面向消息中間件(Message Oriented Middleware,MOM)較好的解決了以上問題。發送者將消息發送給消息服務器,消息服務器將消息存放在若干隊列(Message Queen ,MQ)中,在合適的時候再將消息發送給接受者。

(1)這種模式下,發送和接收是異步的,發送者無需等待。

(2)二者的生命週期未必相同,發送消息的時候接受者不一定運行,接收消息的時候發送者也不一定運行。

(3)一對多通信,對於一個消息可以有多個接受者。

消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信

消息中間件適用於需要可靠的數據傳送的分佈式環境。採用消息中間件機制的系統中,不同的對象之間通過傳遞消息來激活對方的事件,完成相應的操作。發送者將消息發送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發給接收者。消息中間件能在不同平臺之間通信,它常被用來屏蔽掉各種平臺及協議之間的特性,實現應用程序之間的協同,其優點在於能夠在客戶和服務器之間提供同步和異步的連接,並且在任何時刻都可以將消息進行傳送或者存儲轉發,這也是它比遠程過程調用更進一步的原因。(引自百度百科)

2 消息中間件的傳遞模式

  1. 點對點模型(PTP)點對點模型用於消息生產者和消息消費者之間點到點的通信。消息生產者將消息發動到由某個名字標識的特定消費者。這個名字實際上對應於消息服務中的一個隊列(Queue),在消息傳動給消費者之前它被存儲在這個隊列中。隊列可以是持久的,以保證在消息服務出現故障時仍然能夠傳遞消息。

  2. 發佈-訂閱模型(Pub/Sub)發佈-訂閱模型用稱爲主題(topic)的內容分層結構代替了PTP模型中的惟一目的地,發送應用程序發佈自己的消息,指出消息描述的是有關分層結構中的一個主題的信息。希望接收這些消息的應用程序訂閱了這個主題。訂閱包含子主題的分層結構中的主題的訂閱者可以接收該主題和其子主題發表的所有

3 Java消息服務(JMS)

JMS定義了java中訪問消息中間節的接口。

3.1 JMS簡介

JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信。Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。

JMS是一種與廠商無關的 API,用來訪問消息收發系統消息,它類似於JDBC(Java Database Connectivity)。這裏,JDBC 是可以用來訪問許多不同關係數據庫的 API,而 JMS 則提供同樣與廠商無關的訪問方法,以訪問消息收發服務。許多廠商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 使您能夠通過消息收發服務(有時稱爲消息中介程序或路由器)從一個 JMS 客戶機向另一個 JMS客戶機發送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶着應用程序的數據或有效負載。根據有效負載的類型來劃分,可以將消息分爲幾種類型,它們分別攜帶:簡單文本(TextMessage)、可序列化的對象 (ObjectMessage)、屬性集合 (MapMessage)、字節流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負載的消息 (Message)。

注:以上對JMS的解釋,引自百度百科。

3.2JMS術語:

Provider(MessageProvider):消息生產者

Consumer(MessageConsumer):消息消費者

PTP:Poino to Point ,點對點的消息模型

Pub/Sub:Publish/Subscribe,發佈/訂閱的消息模型

Queue:隊列

Topic:主題

ConnectionFactory:鏈接工廠,JMS用它創建鏈接

Connection:JMS客戶端到Provider的鏈接

Destination:消息的目的地

Session:會話,一個發送或者接受消息的線程

3.3 JMS消息格式定義

JMS定義了五種不同的消息正文格式,以及調用的消息類型,允許你發送並接收一些不同形式的數據,提供現有消息格式的一些級別的兼容性。

  • StreamMessage Java原始數據的數據流

  • MapMessage 鍵-值對

  • TextMessage 字符串對象

  • ObjectMessage 序列化Java對象

  • BytesMessage 字節數據流

常見的消息中間件產品:ActiveMQ、RocketMQ、RabbitMQ、IBM MQ、Kafka等等都遵循JMS規範。

3 ActiveMQ簡介

ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演着特殊的地位,可以說ActiveMQ在業界應用最爲廣泛。ActiveMQ是其他一系列MQ技術的基礎。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章