一、简介
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&wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&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&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端口