Rabbitmq服务器:如何为Amqp服务设置多个端口
问题描述:
我想在两台机器上设置两个rabbitmq服务器,这两个服务器将在两个不同的端口进行通信。我使用的这两台机器是可ping通的,并且它们具有相同的Rabbitmq用户名/密码。根据RabbitMQ文档,对于任何想要使用消息队列的服务器,只需要5672。 当我尝试用另一个端口进行连接,让我们说,例如567,我得到这个错误:Rabbitmq服务器:如何为Amqp服务设置多个端口
Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:676)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:722)
at rmqServer.ServerSimple.init(ServerSimple.java:75)
at rmqServer.ServerSimple.main(ServerSimple.java:132)
Exception in thread "main" java.lang.NullPointerException
at rmqServer.ServerSimple.activateConsumer(ServerSimple.java:97)
at rmqServer.ServerSimple.main(ServerSimple.java:133)
下面是我使用的代码:
connectionFactory = new ConnectionFactory();
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
connectionFactory.setHost("localhost");
connectionFactory.setPort(5672);
答
首先,使用567端口或任何小于1024的端口并不是一个好主意。当然,如果您的机器上的端口是免费的,您可以使用它,但是选择一个大于1024的端口更简单。Here是众所周知的端口列表。
对于第二部分,端口必须在其配置中注册到rabbitmq。一切都很好地解释in the docs,只需寻找tcp_listeners。我只会引用一部分:
[ {rabbit,[{tcp_listeners,[5673]}]}]。
这个例子将改变该端口的RabbitMQ侦听为AMQP 0-9-1客户端连接从 5672至5673.
答
此代码确实起作用 [ { 兔, [ {tcp_listeners,[ 5673,5672]}, %% {tcp_listeners,[{ “127.0.0.1”,5672}, %% { “127.0.0.1”,5673}]},
{loopback_users,[]} ] } ]。
感谢您的帮助!