前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ActiveMQ协议详解

ActiveMQ协议详解

作者头像
张申傲
发布2020-09-03 11:38:20
1.1K0
发布2020-09-03 11:38:20
举报
文章被收录于专栏:漫漫架构路

ActiveMQ协议详解

一. 传输协议概述

  1. Connectors:ActiveMQ提供的用来实现连接通信的功能,包括Client-Broker和Broker-Broker。ActiveMQ允许客户端使用多种协议进行连接。
  2. 配置Transport Connector:在activemq.xml配置文件中:
代码语言:javascript
复制
<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>
  1. 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. 配置:
代码语言:javascript
复制
 <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通信的基础上实现安全地连接。配置如下:
代码语言:javascript
复制
<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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/01/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ActiveMQ协议详解
    • 一. 传输协议概述
      • 二. TCP
        • 三. NIO
          • 四. UDP
            • 五. SSL
              • 六. 其他协议
              相关产品与服务
              文件存储
              文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档