上节提到ActiveMQ支持多种协议,下面分析一下,ActiveMQ各个协议的特点以及该协议在什么情况下使用,使用所应用的接口。
常见的协议配置信息:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616" discoverryUri="multicast://default"/>
<transportConnector name="ssl" uri="ssl://localhost:61617"/>
<transprotConnector name="stomp" uri="stomp://localhost:61613"/>
<transportConnector name="xmpp" uri="xmpp://localhost:61222"/>
</transportConnectors>
1. TCP协议:TCP协议保证broker与client的高稳定性通信。使用openwire序列化字节流,促使网络上的传输效率和数据快速交互。应用接口为16161
高效性:使用字节流传递,提高传输效率
高可用性:应用广泛,支持任何平台。
稳定性:数据不会被篡改,不会丢失。
2. NIO协议:允许开发人员对同一资源有更多的client调用和服务端有更多负载。适合场景:(1)大量client连接broker是被操作系统线程数限制,NIO的实现比TCP应用更少的线程;(2)对于Broker有一个很迟钝的网络传输,NIO比TCP提供更好的性能。
3. UDP协议:仅仅是一个链接协议。尽可能减少数据传递延迟,快速传递数据;当ActiveMQ通过防火墙时,不能使用TCP。
4.SSL(Secure sockets Layer Protocol):基于TCP协议之上的安全协议。
5. VM Protocol:在VM内部通信,避免网络开销;采用的不是socket链接,而是直接使用本地方法调用。
6. Multicast:多点传播,用multicast协议在网络中频繁添加和删除ip不会有影响,能够自动发现brocker.这样,ActiveMQ能自动适应动态变化地址;缺点是自动链接地址和过度消耗网络资源。
7. discovery协议:在multicast协议的功能上定义的,功能类似于failover,动态发现multicast协议中的broker并且随机链接一个broker。
8. static协议:创建一个静态配置,对于网络中多个broker,用于符合url,一个符合url包括多个url地址。
9. failover protocol:client配置链接到broker上,如果broker的链接失败,Failover实现自动重新连接逻辑。