1. 程式人生 > >activemq訊息中介軟體--JMS概述(1)

activemq訊息中介軟體--JMS概述(1)

1 JMS概述

目前現在很多的RPC中介軟體技術都有如下問題:
(1)同步通訊,客戶端發出呼叫請求,必須等待服務端處理完成以後返回結果才能繼續執行。
(2)客戶和服務物件的生命週期緊密耦合,客戶程序和服務程序都必須正常進行,如果由於服務物件的崩潰和網路故障導致客戶請求不可達,客戶收到異常。
(3)點對點通訊,客戶的一次呼叫只發送給某個單獨的目標物件。

面向訊息的中介軟體可以解決上述問題。傳送者將訊息傳送給訊息伺服器,訊息伺服器將訊息存放在若干佇列,在合適的時候將訊息轉發給接收者。這種模式下,傳送和接收是非同步的,傳送者無需等待,二者的生命週期未必相同,傳送訊息的時候接收者不一定執行,接收訊息的時候傳送者未必執行;一對多通訊,對於一個訊息可以有多個接收者。

java訊息服務(JMS)定義了java中訪問訊息中介軟體的介面。

2 JMS術語

Provider 生產者
consumer 消費者
PTP 點對點的訊息模型
Pub/Sub 釋出/訂閱的訊息模型
Queue 佇列目標
Topic 主題目標
ConnectionFactory 連線工廠,JMS用它建立連線
Connection JMS客戶端到JMS Provider的連線
Destination 訊息的目的地
Session 會話 一個傳送或者接收訊息的執行緒

3 訊息格式定義

StreamMessage java原始值的資料流
MapMessage 一套名稱-值對
TextMessage 一個字串物件
ObjectMessage 一個序列化的java物件
BytesMessage 一個未解釋位元組的資料流

4 幾種訊息中介軟體

1 rocketMq(商用)
2 kafka
優點:效能和吞吐量非常高,它是採用空中接力不落地設計原則,也就是說將訊息放在記憶體中,kafka並不採用持久化方式(資料落地方式,刷盤方式)來保證資料的可靠性,也就是說資料有可能會丟失。
但是kafka採用分散式,主從多副本保證資料的可靠性。
適合於大資料的資料分析和資料探勘。
3 activeMq
4 rabbitMQ