共计 1686 个字符,预计需要花费 5 分钟才能阅读完成。
在 activemq 的 conf/activemq.xml 主配置文件里,有这样一段话,如图:
这个图里里的 transportConnectors 字段就是 mq 对各个网络协议端口的规定,由图可见,openwire 这个 name 使用的接入端口是 61616,amqp 这个 name 的接入端口号是 5672。name 里的值是随便写的,它也会体现在 mq 的 web Connections 界面里,而 0.0.0.0 是代表本机所有设备的意思,注意这里不可以写 127.0.0.1 或者 localhost,这样写的话 mq 是无法连上网的。再往后面看,后面也规定对应 name 的端口最大的链接数是 1000,wireFormat.maxFrameSize 的意思是“一个完整消息的大小”,这里规定是 100M。
这里补充一句,Activemq 默认的消息协议是 openwire,他是 tcp。
在“transportConnector”标记中,除了必须填写的“name”属性和“uri”属性以外还有一些可选择的属性,例如:enableStatusMonitor、updateClusterClients。详细的属性介绍可参考官方文档 http://activemq.apache.org/configuring-transports.html 中“Server side options”部分章节的介绍。
在 activemq 的 5.13.x 里,apache 公司把这一段内容进行了简化,变成了下面的样子。
那些七七八八的协议统一整合成了一个 auto, 对单个协议的设定也是大锅烩了。这样的设置由于没有特别指定 activemq 的网络监听端口,所以它默认使用的是 BIO 的网络 IO 模型,而对于 tcp 为主的网络架构,我们应该特别说明要用的是 NIO 网络模型,所以我们更改配置如下:
这么改完之后,只有 tcp 协议才能通过,如果除了 tcp 还有其他的协议怎么办?
改成这样就行了。
如果为了彰显逼格以及让你的 mq 更加坚挺,我们还应该增加如下的字段:
<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″ />
这里还额外设置 NIO 使用的线程池核心工作线程数量和最大工作线程数量。
推荐阅读:
Spring+Log4j+ActiveMQ 实现远程记录日志——实战 + 分析 http://www.linuxidc.com/Linux/2015-12/126163.htm
Spring 下 ActiveMQ 实战 http://www.linuxidc.com/Linux/2015-11/124854.htm
Java 消息队列 –ActiveMQ 实战 http://www.linuxidc.com/Linux/2016-12/138848.htm
CentOS 6.5 启动 ActiveMQ 报错解决 http://www.linuxidc.com/Linux/2015-08/120898.htm
ActiveMQ 部署步骤和后台管理网站 Service Unavailable 问题解决 http://www.linuxidc.com/Linux/2016-11/137050.htm
Linux 环境下面 ActiveMQ 端口号设置和 WEB 端口号设置 http://www.linuxidc.com/Linux/2012-01/51100.htm
ActiveMQ 的详细介绍 :请点这里
ActiveMQ 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141817.htm