一、简介

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


配置Transport Connector,在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: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>


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

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

 2:NIO 

 3:UDP 

 4:SSL 

 5:Http(s)

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

二、配置

2.1 TCP

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

这是默认的Broker配置,TCP的Client监听端口是61616。


OpenWire:在网络传输数据前,必须要序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。默认情况下,ActiveMQ把wire protocol叫做

       OpenWire,它的目的是促使网络上的效率和数据快速交互。

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

TCP传输的优点:

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

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

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

所有关于Transport协议的可配置参数,可以参见:http://activemq.apache.org/configuring-version-5-transports.html

2.2 NIO

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

2、适合使用NIO协议的场景:

(1)可能有大量的Client去链接到Broker上一般情况下,大量的Client去链接Broker是被操作系统的线程数所限制的。因此,

   NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议

(2)可能对于Broker有一个很迟钝的网络传输NIO比TCP提供更好的性能

3、NIO连接的URI形式:nio://hostname:port?key=value

<transportConnectors>
    <transportConnector name="tcp" uri="tcp://localhost:61616?trace=true" />
    <transportConnector name="nio" uri="nio://localhost:61618?trace=true" />
</transportConnectors>

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