ActiveMQActiveMQ 传输协议

Posted 思想累积

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveMQActiveMQ 传输协议相关的知识,希望对你有一定的参考价值。

1、ActiveMQ 传输协议

ActiveMQ 支持的 client-broker 通讯协议有:TCP、NIO、UDP、SSL、Http(s)、VM等

1.1 ActiveMQ 传输协议配置

在 ActiveMQ 安装目录下的 conf/activemq.xml 中的 transportConnectors 标签内可以看到下面的实际配置

如果不指定 ActiveMQ 的网络监听端口,这项端口都将使用 BIO 网络 IO 模型

<!--
            The transport connectors expose ActiveMQ over a given protocol to
            clients and other brokers. For more information, see:

            http://activemq.apache.org/configuring-transports.html
        -->
<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&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>

配置信息

  • URI 描述信息的头部采用协议名称
  • activeMQ 默认消息协议是 openwire,URI 头使用 tcp://

1.2 ActiveMQ 传输协议种类

Transmission Control Protocol (TCP)

  • 默认的 Broker 配置,TCP 的Client 监听端口是 61616
  • 网络传输数据必须要序列化,消息通过 wire protocol 来序列化成字节流。默认把 ActiveMQ 的 wire protocol 叫做 OpenWire
  • TCP 连接的URI 形式:tcp://hostname:port?key=value&key=value
  • tcp 传输优点:
    • 可靠性高,稳定性强
    • 字节流传输,高效
    • 应用广泛,可用性高

New I/O API Protocol(NIO)

  • 与 TCP 协议类似,但允许开发人员对同一资源可以有更多的 client 调用和服务端有更多的负载
  • NIO 连接 URI:nio//hostname:port?key=value

AMQPstompSecure Sockets Layer Protocol (SSL)mqttws

协议描述
TCP默认协议,性能一般
NIO基于 TCP 协议进行了扩和优化,有更好的扩展性
UDP性能比 TCP 协议更好,不具有可靠性
SSL安全连接
HTTP/HTTPS基于 HTTP 或者 HTTPS
VM客户端和代理在同一个 jvm 中运行时,不占用网络通道直接通信,可以使用该方式

1.3 配置 NIO 传输协议

在配置文件中添加

<transportConnectors>
    <transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>
</transportConnectors>

更改之后连接地址更改协议为 NIO,端口为上面配置中端口地址

URI 格式以 NIO 开头,标识端口只能用 TCP 协议为基础的网络 IO 模型,但是这样设置的话,只能让这个端口支持 Openwire 协议

auto + NIO 配置,多协议适配

<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61608?maxnumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;org.apache.activema.transport.nio.SelectorManager.corePoolSize=20&amp;org.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=50" />

以上是关于ActiveMQActiveMQ 传输协议的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ知识概括

ActiveMQ知识概括

ActiveMQ知识概括

HDS协议介绍

分布式系列之ActiveMqActiveMq入门示例

如何从我的 DatePicker 片段中传输格式化的日期字符串?