2021-03-03 10:58:40
浏览数 (1)
1. ActiveMQ 支持哪些协议?
- ActiveMQ 支持多种协议传输和传输方式,允许客户端使用多种协议连接。
- ActiveMQ 支持的协议:AUTO、OpenWire、AMQP、Stomp、MQTT 等。
- ActiveMQ 支持的基础传输方式:VM、TCP、SSL、UDP、Peer、Multicast、HTTP(S) 等,以及更高级的 Failover、Fanout、Discovery、ZeroConf 方式。
ActiveMQ 协议连接配置
- 在 ${ACTIVEMQ_HOME}/conf/activemq.xml 中,通过配置 <transportConnectors> 就可以使用多种传输方式。
代码语言:javascript
复制<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
2. 数据传输方式及配置
1. TCP
2. SSL
3. NIO
4. UDP
5. HTTP(S)
6. VM
3. OpenWire 协议
1. OpenWire 协议是什么?
- OpenWire 是 Apache 的一种跨语言的协议,允许从不通的语言和平台访问 ActiveMQ,是 ActiveMQ 4.x 以后的版本默认的传输协议。
- http://activemq.apache.org/openwire-version-2-specification
- http://activemq.apache.org/wire-protocol.html
2. OpenWire 协议如何使用
- OpenWire 支持 TCP、SSL、NIO、UDP、VM 等传输方式,直接配置这些连接,就是使用的 OpenWire 协议,OpenWire 有自己的配置参数,客户端和服务器端配置的参数名都是通过前缀“WireFormat.”表示。
- http://activemq.apache.org/configuring-wire-formats.html
- 示例:
tcp://localhost:61616?wireFormat.cacheEnabled=false&wireFormat.tightEncodingEnabled=false
- 配置参数说明
属性 默认值 描述 stackTraceEnabled true 是否应该把已经发生并且跟踪到的堆栈异常,通过 broker 发送到客户端。 tcpNoDelayEnabled true socket 的 NoDelay 参数。 cacheEnabled true 是否应该缓存不断重复的值,以便减少编组(马上要进行的发送)。 tightEncodingEnabled true 根据 CPU 使用情况,自动调整传输内容大小(压缩比例)。 sizePrefixDisabled false 每个包封送前,每个包的大小是否应该作为前缀。 maxInactivityDuration 30000 连接的最大空闲时间,以毫秒为单位。<br/>broker服务器会根据配置关闭超时的连接。<br/>同时也可以通过心跳机制来保持连接。<br/>值 <=0 则禁用活动连接的监测。 maxInactivityDurationInitalDelay 10000 连接建立之后,多久开始进行超时检测。 cacheSize 1024 如果能被缓存,那么这个规定了缓存的最大数量。此属性在 ActiveMQ 的 4.1 中开始添加使用。 maxFrameSize MAX_LONG 可发送最大帧大小。<br/>可以帮助防止 OOM DOS 攻击。
4. MQTT 协议
1. MQTT 协议是什么?
- MQTT(Message Queuing Telemetry Transport) 消息队列遥测传输是 IBM 开发的一个即时通讯协议,已成为物联网通信的标准。
2. 为什么使用 MQTT
- MQTT 的结构简单,相对于其他消息协议,它更加轻量级。适合在计算能力有限、低带宽、不可靠的网络环境使用。
3. MQTT 的发布订阅模型
4. MQTT 服务质量
- 什么是服务质量
- 服务质量(QoS)级别是一种关于发送者和接收者之间信息投递的保证协议。MQTT 中有三种 QoS 级别:
- 为什么要有服务质量
- QoS 是 MQTT 的一个主要功能,它使得在不可靠的网络下进行通信变得更为简单,因为即使在非常不可靠的网络下,协议也可以掌控是否需要重发消息并保证消息到达。它也能帮助客户端根据网络环境和程序逻辑来自由选择 QoS。
- 它是如何工作的
5. ActiveMQ 服务器端配置
代码语言:javascript
复制<transportConnectors>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
6. Spring 使用 MQTT
5. AUTO 协议
1. AUTO 协议是什么
- Auto 自动检测协议。
- 从 ActiveMQ 5.13.0 开始,ActiveMQ 开始支持协议格式检测,可以自动检测 OpenWire、STOMP、AMQP 和 MQTT。允许这四种类型的客户端共享一个传输。
2. 如何使用 AUTO 协议