JMS
先來了解下什么叫MOM
MOM(Message-oriented Middleware) 面向消息的中間件 。分布式系統(tǒng)的集成:利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信進行分布式系統(tǒng)的集成。
-
定義
- Java Message Service
- 是一個java平臺關于MOM(消息中間件)的api,用于兩個程序之間,或分布式系統(tǒng)中發(fā)送消息,進行異步通訊。
-
優(yōu)勢
- Asynchronous 異步
- 是一個異步的消息服務
- 客戶端獲取消息的時候,不是主動獲取,而是消息會主動發(fā)送給客戶端
- 可靠 Reliable
- 會保證消息只被消費一次
- Asynchronous 異步
-
消費模型
- p2p 點對點
- publish/subscribe 發(fā)布訂閱
-
規(guī)范
image -
Message組成
- Header 消息頭
- properties 屬性 主要是對消息頭中屬性的補充
- body 消息體 用戶自定義 包括多種 TextMessage StreamMessage MapMessage ObjectMessage BytesMessage
ActiveMq
優(yōu)勢
- 加快系統(tǒng)響應 系統(tǒng)分布式解耦,異步并行,加快系統(tǒng)對用戶請求的訪問速度
- 降低系統(tǒng)耦合 子系統(tǒng)間通過隊列通信,避免相互耦合和影響
- 數據緩存 消息隊列提供億級的消息堆積能力
activemq就是實現了jms的一種provider
優(yōu)化 及參數詳解
- 消息堆積
生產者
生產者發(fā)送的消息 主要分為兩種 PERSISTENT Message(持久化)和NON_PERSISTENT
發(fā)送NON_PERSISTENT消息發(fā)送方默認使用異步方式。異步發(fā)送并非絕對的異步,發(fā)送者會在發(fā)送一定大小之后等待回執(zhí)。
消費者
預取數量 prefetchSize
確認機制 ACK 用JMS中的acknowledge來設置
死信
多次消費都失敗 那就放入一個異常隊列 等待處理
