如果一个项目中同时启用activemq消息队列和rabbitmq消息队列。activemq使用的默认协议端口5672,和rabblitmq的默认端口冲突了,在不影响业务的情况下,只能修改rabbltmq的tcp监听端口。步骤如下:
rabbitmq.config默认是没有生成的,只有一个rabbitmq.config.example,需要自己建一个,要么就copy一个改下名字,要么就是把.example去掉 。
rabbitmq.config目录并非安装目录下面的etc,默认是在 C:\Users%USERNAME%\AppData\Roaming\RabbitMQ 下,这一点在安装目录下面的etc目录下的readme.txt中有说明。 说明如下:
In this directory you can find an example configuration file for RabbitMQ.
Note that this directory is not where the real RabbitMQ
configuration lives. The default location for the real configuration
file is %APPDATA%\RabbitMQ\rabbitmq.config.
%APPDATA% usually expands to C:\Users%USERNAME%\AppData\Roaming or similar.
rabbitmq.config的数据格式类似json,但并非json。其中端口号是以下这行 %% {tcp_listeners, [5672]}, 很多人以为只需把 %% 拿掉保存就OK了。*
其次,修改了配置文件后,不能只是重启服务。我就吃了这个亏,又是重启服务又是重启服务器还是没效果,而需要到安装目录下面的sbin执行三个步骤,cmd窗口必须是管理员身份运行。
执行 rabbitmq-service.bat stop 停止服务
执行 rabbitmq-service.bat install 重新安装服务,这时才会重新加载config文件
执行 rabbitmq-service.bat start 开启服务
例如:
D:\RabbitMQServer\rabbitmq_server-3.7.4\sbin> .\rabbitmq-service.bat stop
D:\RabbitMQServer\rabbitmq_server-3.7.4\sbin> .\rabbitmq-service.bat start
D:\RabbitMQServer\rabbitmq_server-3.7.4\sbin> .\rabbitmq-service.bat start
. 如果config有问题,服务是启动不起来的,而且错误信息也是很难发现的,我最先就是那个端口后面那个逗号没有去掉,结果启动出错,又不知道错误原因,很难排查。
所有config的修改,都必须修改好后,执行第4步
如果是通过环境变量设置config所在目录,一定要注意,环境变量 RABBITMQ_CONFIG_FILE, 这个变量并非是config所在目录,也不是config的全路径。 如你想设置config为 D:\RabbitMQ\rabbitmq.config,则 RABBITMQ_CONFIG_FILE=D:\RabbitMQ\rabbitmq ,因为rabbitmq会自动在变量值后面加上.config后缀,这个在rabbitmq的官方文档上有说明。