7 ActiveMQ的NIO协议使用
- NIO协议配置:
由ActiveMQ安装目录所在的/conf/activemq.xml的配置文件可知,ActiveMQ默认出厂配置并不是NIO网络模型,而是BIO网络模型,若想使用NIO网络模型,需要transportConnectors标签加入以下配置,端口可以自定义(如果不指定端口,默认使用BIO网络IO模型端口,比如OpenWire、STOMP、AMQP等):
<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true" />
配置完后,使用命令./activemq restart重启ActiveMQ,打开控制台的Connections看到Connector NIO一栏则表示配置成功。

NIO配置文件修改后,连接ActiveMQ的url由原来的tcp://your ip:61616改成nio://your ip:61618即可。
- NIO使用增强:
在我们没有配置NIO时,端口使用的是以TCP为协议基础的BIO + TCP模式,当配置了NIO并且URI格式以“nio”开头后,此时端口使用的是以TCP协议为基础的NIO网络模型,即NIO + TCP。

怎么能做到让这个端口既支持NIO网络模型,又让他支持多个协议呢(即不仅仅是TCP协议)?
(1)配置auto:
auto关键字:在NIO上启用自动检测功能(来自官方翻译)

在ActiveMQ安装目录所在的/conf/activemq.xml的配置文件的transportConnectors中加入以下一行配置(端口可自行指定).
<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:5678" />
配置完后,启动ActiveMQ,并在控制台访问,在Connections菜单出现Connector auto+nio一栏则表示配置成功.

(2)修改连接服务的URI:
连接ActiveMQ服务的URI格式:[协议名称]😕/[your ip]:5678
由上一步可知,使用auto关键字配置了5678端口,当我们在5678端口使用指定的协议名称时,ActiveMQ会自动使用该协议的NIO网络不行,不再是原来的BIO网络模型,由此达到NIO网络模型支持多协议的作用。
比如当我们在5678使用TCP协议时,则URI应该配置为:tcp://your ip://5678,则此时5678使用的是以TCP协议为基础的NIO网络模型。
注:不同的网络协议使用不同的客户端代码,即jar不同,api也不同.
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
