ActiveMQ是什麼
Apache出品,最流行的,能力強勁的開元總線
JMS規範
發送消息,進行異步通信,Java消息服務是一個與具體平臺無關的API
消息模型:
點對點:Point-to-Ponit Queue
發佈訂閱:Publish/Subscribe /主題 Topic
JMS消息結構:
消息頭--消息屬性--消息體
ActiveMQ特性
支持多種編程語言
支持多種傳輸協議
有多種持久化方式
ActiveMQ安裝
解壓即可
作爲服務啓動 -- systemctl
systemctl start activemq
systemctl stop activemq
創建ActiveMQ系統服務:
ActiveMQ使用
maven jar包
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
</dependency>
協議
支持多種協議傳輸和傳輸方式,允許客戶端使用多種協議連接
支持的協議:OpenWire、MQTT、AUTO、AMQP、Stomp等
支持的基礎傳輸方式:VM、TCP、SSL、UDP、Peer、Multicast、HTTP(s)等、以及更高級的Failover、Fanout、Discovery、ZeroConf方式
協議配置:
OpenWire協議:
MQTT協議:物聯網使用場景較多
IBM公司
MQTT的結構簡單,相對於其他消息協議,它更加輕量級。適合在計算能力有限、底寬帶、不可靠的網絡環境使用
服務質量(QoS)
服務質量級別是一種關於發送者和接受者之間信息投遞的保證協議。MQTT中有三種QoS級別
至多一次(0) -- 最多發送一次
至少一次(1) -- 每次發送消息收到回執,如果沒收到回執將重發,服務端可能接收多次消息
只有一次(2) -- 在1的基礎上。在保證消息發送到服務器端上並且做去重操作,性能最差
爲什麼要有服務質量:
QoS是MQTT的一個主要功能,他是的在不可靠的網絡下進行通信變得更爲簡單,因爲即便是在非常不可靠的網絡下,
協議也可以使掌控是否需要重發消息並保證消息到達。他也是能幫主客戶端根據網絡環境和程序邏輯來自由選擇QoS
MQTT配置:默認開啓
高可用集羣方案
開啓高可用集羣配置:
Master-Slave(主從)部署方式
消息保存在數據庫,多個ActiveMQ連接在同一個數據庫 -> 故障切換
Broker-Cluster部署方式
Master-Slave與Broker-Cluster相結合的部署方式
networkConnector網絡連接器配置說明
持久化
KahaDB --> 默認
JDBC
AMQ --> 被KaHaDB替代
LevelDB --> 廢棄
持久化是對Queue和Topic進行的,無論使用哪種持久化方式,消息的存儲邏輯是一致的