消息中间件ActiveMQ 4: 传输协议

ActiveMQ的传输协议

ActiveMQ支持的client-broker通讯协议有:
在这里插入图片描述

其中配置Transport Connector的文件在${ActiveMQ_HOME}/conf/activemq.xml中的标签之内。
官方文档地址: http://activemq.apache.org/configuring-version-5-transports.html

1、 Transmiss Control Protocol(TCP)默认

1.TCP是ActiveMQ默认的协议,监听端口是61616

2.配置是:(存放在transportConnector 内)

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

3.网络传输数据前,必须要序列化数据,消息通过一个叫wire protocol的序列化成字节流。
默认请看清下ActiveMQ把wire protocol命名为openwire

4.TCP传输的特点:
TCP协议传输可靠性高,稳定性强
高效率,字节流方式传递,效率高
有效性、可用性:应用广泛,支持任何平台

2、New I/O API Protocol (更好的性能)

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

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

  • 可能有大量和的client去连接到Broker上,一般情况下,大量的Client去连接Broker是被操作系统的线程所限制的,因此,NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议
  • 可能对于Broker有一个很迟钝的网络传输,NIO比TCP提供更好的性能。

NIO配置示例:
在这里插入图片描述

<transportConnector name="nio" uri="tcp://0.0.0.0:61618?trace=true"/> 

连接地址的协议改为: nio://ip:61618 ,例如:nio://192.168.25.134:61616

NIO协议案例增强

  • 问题:URI格式以nio开头,表示这个端口使用以TCP协议为基础的NIO网络IO协议,但是这样的设置方式,只能使这个端口支持Openwire协议。
  • 如果我们需要一个端口来支持NIO网络IO协议,同时又支持多个协议。

解决方法:使用auto关键自使用“+”符号来为端口设置多种特性。

更多资料查看:ActiveMq关于NIO的自动配置

<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61608"/>

为了进一步优化在该配置上还会添加相应的参数,所以完整的配置是

<transportConnectors>
	<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61608?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;
org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&amp;org.apache.activemq.transport.nio.Se1ectorManager.maximumPoo1Size=50"/>
</transportConnectors>

说明

  • auto: 针对所有的协议,他会识别我们是什么协议。
  • nio:使用NIO网络IO模型

3、由于主要是Java开发,这里就不对其他协议进行细讲。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值