ActiveMQ支持的client-broker通讯协议
ActiveMQ默认出厂自带openwire(TCP默认)、amap、stomp、mqtt、ws这5种
在conf/activemq.xml中的<transportConnectors>标签之内。
1.TCP
(1)是默认的Broker配置,TCP的Client监听器端口是61616
(2)在网络传输数据前,必须要序列化数据,消息是通过一个叫wire protocol的来序列化成字节流
默认情况下ActiveMQ把wire protocol叫做OpenWire,它的目的是促使网络上的效率和数据快速交互。
(3)TCP连接的URL形式如:tcp://hostname:port?key=value&key=value,后面的参数可选
2.NIO
(1)与TCP协议类似,但更侧重于低层的访问操作,允许开发人员对统一资源可有更多的client调用和服务端有更多的负载,
(2)适用场景
可能有大量的Client去连接到Broker上,NIO的实现比TCP需要更少的线程去运行
可能对于Broker有一个很迟钝的网络传输,NIO提供更好的性能
(3)URL形式:nio//hostname:port?key=value
(4)使用
1.修改activemq.xml文件,在<transportConnectors>标签内加上nio传输协议
<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>
2.生产者和消费者代码修改(也可以使用原来的tcp协议没有影响),把url修改为:nio://192.168.12.128:61618
(5)nio加强,使nio支持多协议
把原先的<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>注释掉
加入:
<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61608?maximumConnections=1000&wireFormat.maxFrameSize=104857600&org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&org.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=50"/>
生产者和消费者代码修改把url的端口修改为:61608