11.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一栏则表示配置成功。
在这里插入图片描述
更多协议介绍参考:10.ActiveMQ的传输协议

NIO配置文件修改后,连接ActiveMQ的url由原来的tcp://your ip:61616改成nio://your ip:61618即可。

连接ActiveMQ的java代码参考:Java编码实现ActiveMQ通讯

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也不同。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NPException.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值