解决Qpid与RabbitMQ端口冲突问题(epmd reports: node rabbit’ not running at all),RabbitMQ 3.11修改AMQP端口
Posted zzy0516alex
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Qpid与RabbitMQ端口冲突问题(epmd reports: node rabbit’ not running at all),RabbitMQ 3.11修改AMQP端口相关的知识,希望对你有一定的参考价值。
解决Qpid与RabbitMQ端口冲突问题(node rabbit’ not running at all),RabbitMQ 3.11修改AMQP端口
本文以Windows为例讲解如何修改Rabbit MQ默认端口,从而解决Qpid与Rabbit MQ冲突的问题。
RabbitMQ的默认端口如下:
-
4369 (epmd), 25672 (Erlang distribution)
-
5672, 5671 (AMQP 0-9-1 without and with TLS)
-
15672 (if management plugin is enabled)
-
61613, 61614 (if STOMP is enabled)
-
1883, 8883 (if MQTT is enabled)
其中AMQP端口5672与Qpid使用的端口冲突,从而导致两个消息中间件有一个无法正常工作。
为了修改RabbitMQ的默认端口我查了很多资料,它们都说需要修改一个rabbitmq.config文件(或找到一个rabbitmq.config.exsample)来实现配置,但本人所安装的3.11.2版本的目录下并没有找到这个文件。在查阅了官网的文档后,发现现在的配置文件变为了如下两个:
在C:\\Users\\user\\AppData\\Roaming\\RabbitMQ目录下存在文件advanced.config (虽然里面是空的),但没有文件rabbitmq.conf。该文件才是决定rabbitMQ配置的主文件,所以我们手动新建一个txt,重命名为rabbitmq.conf。该文件的样例文件可以在github-rabbitmq找到,大致如下:
我们没有必要粘贴全部的文件内容到我们的配置文件中,只需要选取其中需要使用的部分即可:
这里我们只更改端口号(若要更改其他配置,可参照官网中各字段的描述):
listeners.tcp.default = 5673
将上述语句加入到我们新建的配置文件rabbitmq.conf中,并将它置于advanced.config文件同一目录下(C:\\Users\\user\\AppData\\Roaming\\RabbitMQ)。
接下来需要让RabbitMQ知道你做了这些更改,并使用这个配置文件。通过查阅官网文档得知可以通过新增/更改系统环境变量的方式来应用新的配置文件:
我们在编辑系统环境变量窗口中新建如下系统变量 RABBITMQ_CONFIG_FILE:
注意:这里的路径需要精确到文件,并且文件必须带有后缀 .conf !
接着,需要重启RabbitMq来应用这些更改:
用管理员权限打开cmd,cd到rabbitmq server/sbin目录下,依次运行如下语句:
rabbitmq-service.bat stop
rabbitmq-service.bat remove
rabbitmq-service.bat install
rabbitmq-service.bat start
这样就完成了RabbitMq的重启操作,为验证新增配置文件是否被使用,我们可以在cmd运行如下命令:
rabbitmqctl status
其输出若为下图所示内容,则代表已成功更改了端口:
已经安装了QPID和RabbitMQ的情况
此时,执行 rabbitmqctl status命令将会提示Unable to perform an operation on node xxx
node rabbit not running at all:
这时就需要 彻底删除 RabbitMq(包括程序本体,Remote目录下的文件夹,注册表,服务),并通过管理员权限的cmd,执行sc delete 命令删除 RabbitMQ 和 qpidd 的服务。接着先安装默认配置的rabbitMQ,按上文所述更改配置,再安装qpid。
以上是关于解决Qpid与RabbitMQ端口冲突问题(epmd reports: node rabbit’ not running at all),RabbitMQ 3.11修改AMQP端口的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 qpid-jms-client 创建 RabbitMQ 持久队列?
生产者(设备)和消息服务器(Apache Qpid 或 RabbitMQ)之间的负载平衡