• ActiveMQ学习笔记(7)----ActiveMQ支持的传输协议


    1. 连接到ActiveMQ

      Connector: Active提供的,用来实现连接通讯的功能,包括:client-to-broker,broker-to-broker.ActiveMQ允许客户端使用多种协议来连接。

      1.1 配置Transport Connecto

      在conf/activemq.xml里面,大致如下:

     <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:9999?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>

       1.2ActiveMQ 支持client-broker通讯协议如下:

      1. TCP:这个也是缺省使用的协议。

      2. NIO

      3. UDP

      4. SSL

      5. HTTP(S)

      6.VM:如果客户端和broker在一个虚拟机内的话,可以通过VM协议在VM内通讯,从而减少网络传输的开销。

    2. ActiveMQ支持的传输协议和配置

      2.1 Transmission Control Protocol (TCP)

        1. 这是默认的broker配置,TCP的client监听端口默认是61616

        2. 在网络传输数据前,必须要序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。默认情况下,ActiveMQ把wire protocol叫做OpenWire,它的目的是促使网络上的效率和数据快速交互。

        3. TCP连接的URI形式:tcp://hostname:port?key=value&key=value, 加粗部分是必须的。

        4. TCP传输的优点:

          (1) TCP协议传输可靠性高,稳定性强。

          (2) 高效性:字节流方式传递,效率很高

          (3) 有效性:可用性:应用广泛,支持任何平台

        5. 所有关于Transport协议的可配置参数,可以参考

          http://activemq.apache.org/configuration-version-5-transports.html

      2.2 New I/O API Protocol(NIO)

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

        2. 适合使用NIO协议的场景

          (1) 可能有大量的Client去连接到Broker上,

            一般情况下,大量的Client去连接到Broker是被操作系统的线程数所限制的。因此,NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议。

          (2) 可能对于Broker有一个很迟钝的网络传输

            NIO比TCP提供了更好的性能。

        3. Transport Connector配置示例:

     <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="nio" uri="nio://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

      上面的的配置,示范了一个TCP协议监听61616端口,一个NIO协议监听61617端口。

      2.3 User Datagram Protocol (UDP)

        1. UDP和TCP的区别

          (1) TCP是一个原始流的传递协议,意味着数据包是有保证的,换句话说,数据包是不会被复制和丢失的。UDP,另一方面,它是不会保证数据包的传递的。也就是可能会丢包的。

          (2 TCP也是一个稳定可靠数据包传递协议,意味着数据在传递的过程中不会被丢失。这样确保了在发送和接收之间能够可靠的传递。相反,UPD仅仅是一个连接协议,所以没有可靠性之说。

        2. 从上面可以得出:TCP是被用在稳定可靠的场景中,UDP通常在快速数据传递和不怕数据丢失的场景中使用,当ActiveMQ通过防火墙时,只能用UDP

        3. UDP连接的URI形式:udp://hostname:port?key=value

        4. Transport Connector配置示例:

     <transportConnector name="udp" uri="udp://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

      2.4 Secure Sockets Layer Protocol (SSL)

        1. 连接URL形式:ssl://hostname:port?key=value

        2. Transport Connector配置示例

     <transportConnector name="ssl" uri="ssl://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

      2.5 Hypertext Transfer Protocol(HTTP/HTTPS)

        1. 像web和email等服务需要通过防火墙来访问的,Http可以适用于这种场合

        2. 连接的URI形式:http://hostname:port?key=value或https://hostname:port?key=value

        3. Transport Connector 配置示例

     <transportConnector name="http" uri="http://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

      2.6 VM Protocol (VM)

        1. VM transport允许在vm内部通信,从而避免了网络传输的开销。这时候采用的连接不是socket连接,而是直接的方法调用。

        2. 第一个创建VM连接的客户会启动一个embed VM broker,接下来所有使用相同的broker name 的vm连接都会使用这个broker.当这个broker上所有的;连接都关闭的时候,这个broker也会自动关闭。

        3. 连接的URI形式:vm://brokerName?key?value

        4. 在Java中嵌入的方式:

          vm:broker:(tcp://localhost:6000)?brokerName=embededbroker&persistent=false,定义一个嵌入的broker名称为embededbroker以及配置一个tcptransportconnector监听在端口6000上。

        5. 使用加载一个配置文件来启动broker

          vm://localhost?brokerConfig=xbean:activemq.xml

    实际开发中,大部分使用的都是在tcp和nio之间取舍。

        

        

  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/Eternally-dream/p/9883685.html
Copyright © 2020-2023  润新知