2016-04-27 442 views
0

我想在两台机器上设置两个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); 

回答

0

首先,使用567端口或任何小于1024的端口并不是一个好主意。当然,如果您的机器上的端口是免费的,您可以使用它,但是选择一个大于1024的端口更简单。Here是众所周知的端口列表。
对于第二部分,端口必须在其配置中注册到rabbitmq。一切都很好地解释in the docs,只需寻找tcp_listeners。我只会引用一部分:

[ {rabbit,[{tcp_listeners,[5673]}]}]。
这个例子将改变该端口的RabbitMQ侦听为AMQP 0-9-1客户端连接从 5672至5673.

0

此代码确实起作用 [ { 兔, [ {tcp_listeners,[ 5673,5672]}, %% {tcp_listeners,[{ “127.0.0.1”,5672}, %% { “127.0.0.1”,5673}]},
{loopback_users,[]} ] } ]。

感谢您的帮助!