ActiveMQ协议详解

ActiveMQ协议详解

一. 传输协议概述

  1. Connectors:ActiveMQ提供的用来实现连接通信的功能,包括Client-Broker和Broker-Broker。ActiveMQ允许客户端使用多种协议进行连接。

  2. 配置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&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="amqp" uri="amqp://127.0.0.1:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="stomp" uri="stomp://127.0.0.1:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="mqtt" uri="mqtt://127.0.0.1:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="ws" uri="ws://127.0.0.1:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    </transportConnectors>
    
  3. ActiveMQ支持的Client-Broker通信协议如下:

    1. TCP:这个也是默认的通信协议
    2. NIO
    3. UDP
    4. SSL
    5. HTTP(S)
    6. VM:如果客户端和Broker在同一个虚拟机内运行,则可以通过VM协议进行通信,有效减少网络传输的开销。

二. TCP

  1. TCP是默认使用的传输协议,默认监听端口61616
  2. 在网络传输数据前,必须先对数据进行序列化。消息是通过一个叫wire protocol的协议被序列化成字节流的。默认情况下,ActiveMQ将wire protocol称为openwire,目的是提高网络传输效率,保证数据的快速交互。
  3. TCP连接的URI格式:tpc://hostname:port?key=value&key=value。(加粗部分为必须的)
  4. TCP传输的优点
    1. 可靠性高,稳定性强
    2. 以字节流方式传递,效率高
    3. 应用广泛,支持任何平台
  5. 所有关于Transport协议的可配置参数,可以参考官网:http://activemq.apache.org/configuring-version-5-transports.html

三. NIO

  1. NIO协议和TCP类似,但是NIO更侧重于底层的访问操作。它允许开发人员对同一资源可以有更多的Client端调用,并且服务端可以承担更多的负载。

  2. NIO协议适用的场景:

  3. 可能有大量的Client去连接Broker

    一般情况下,受到操作系统线程数量的限制,Broker无法承载过多的Client连接。NIO的实现相较于TCP而言,需要更少的线程即可满足大量的客户端连接,所以建议使用NIO协议。

  4. 当Broker的网络传输延迟较大时,建议使用NIO协议。

  5. NIO连接的URI格式:nio://hostname:port?key=value&key=value

  6. 配置:

     <broker>
      ...
      <transportConnectors>
        <transportConnector name="nio" uri="nio://0.0.0.0:61616"/>  
      </<transportConnectors>
      ...
    </broker>
    

四. UDP

  1. UDP和TCP的区别:

    TCP是一个原始流传输协议,意味着数据传输是有保证的,不会出现重复或者丢失的情况。而UDP则无法保证数据的可靠性传输。

  2. UDP的URI格式:udp://hostname:port?key=value&key=value

五. SSL

  1. ActiveMQ支持将NIO和SSL协议结合使用,可以在NIO通信的基础上实现安全地连接。配置如下:

    <broker>
      ...
      <transportConnectors>
        <transportConnector name="nio+ssl" uri="nio+ssl://0.0.0.0:61616"/>  
      </<transportConnectors>
      ...
    </broker>
    

六. 其他协议

  1. 其他协议如HTTP/HTTPS和VM等,在实际生产环境下使用较少,这里不再赘述,有兴趣可以参考官网的介绍:http://activemq.apache.org/configuring-version-5-transports.html
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张申傲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值