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进行的,无论使用哪种持久化方式,消息的存储逻辑是一致的