ActiveMQ协议详解
时间:2022-07-24
本文章向大家介绍ActiveMQ协议详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
ActiveMQ协议详解
一. 传输协议概述
- Connectors:ActiveMQ提供的用来实现连接通信的功能,包括Client-Broker和Broker-Broker。ActiveMQ允许客户端使用多种协议进行连接。
- 配置Transport Connector:在activemq.xml配置文件中:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://127.0.0.1:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://127.0.0.1:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://127.0.0.1:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://127.0.0.1:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://127.0.0.1:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
- ActiveMQ支持的Client-Broker通信协议如下:
- TCP:这个也是默认的通信协议
- NIO
- UDP
- SSL
- HTTP(S)
- VM:如果客户端和Broker在同一个虚拟机内运行,则可以通过VM协议进行通信,有效减少网络传输的开销。
二. TCP
- TCP是默认使用的传输协议,默认监听端口61616
- 在网络传输数据前,必须先对数据进行序列化。消息是通过一个叫wire protocol的协议被序列化成字节流的。默认情况下,ActiveMQ将wire protocol称为openwire,目的是提高网络传输效率,保证数据的快速交互。
- TCP连接的URI格式:tpc://hostname:port?key=value&key=value。(加粗部分为必须的)
- TCP传输的优点
- 可靠性高,稳定性强
- 以字节流方式传递,效率高
- 应用广泛,支持任何平台
- 所有关于Transport协议的可配置参数,可以参考官网:http://activemq.apache.org/configuring-version-5-transports.html
三. NIO
- NIO协议和TCP类似,但是NIO更侧重于底层的访问操作。它允许开发人员对同一资源可以有更多的Client端调用,并且服务端可以承担更多的负载。
- NIO协议适用的场景:
- 可能有大量的Client去连接Broker 一般情况下,受到操作系统线程数量的限制,Broker无法承载过多的Client连接。NIO的实现相较于TCP而言,需要更少的线程即可满足大量的客户端连接,所以建议使用NIO协议。
- 当Broker的网络传输延迟较大时,建议使用NIO协议。
- NIO连接的URI格式:nio://hostname:port?key=value&key=value
- 配置:
<broker>
...
<transportConnectors>
<transportConnector name="nio" uri="nio://0.0.0.0:61616"/>
</<transportConnectors>
...
</broker>
四. UDP
- UDP和TCP的区别: TCP是一个原始流传输协议,意味着数据传输是有保证的,不会出现重复或者丢失的情况。而UDP则无法保证数据的可靠性传输。
- UDP的URI格式:udp://hostname:port?key=value&key=value
五. SSL
- ActiveMQ支持将NIO和SSL协议结合使用,可以在NIO通信的基础上实现安全地连接。配置如下:
<broker>
...
<transportConnectors>
<transportConnector name="nio+ssl" uri="nio+ssl://0.0.0.0:61616"/>
</<transportConnectors>
...
</broker>
六. 其他协议
- 其他协议如HTTP/HTTPS和VM等,在实际生产环境下使用较少,这里不再赘述,有兴趣可以参考官网的介绍:http://activemq.apache.org/configuring-version-5-transports.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法