2014-12-11 130 views
2

类似的问题已经问 RabbitMQ on Amazon EC2 Instance & Locally?cant connect from my desktop to rabbitmq on ec2 但他们得到不同的错误信息。连接到RabbitMQ的EC2上来自外部客户端

我有一个RabbitMQ的服务器上设置正确我的Linux EC2实例中运行。我创建了自定义用户并赋予他们读/写队列的权限。使用本地客户端,我能够正确接收消息。我已经在EC2上设置了安全组,以便端口(5672/25672)处于打开状态,并且可以远程登录到这些端口。我也有这样设置rabbitmq.conf。

[ 
    {rabbit, [ 
      {tcp_listeners, [{"0.0.0.0",5672}]}, 
      {loopback_users, []}, 
      {log_levels, [{connection, info}]} 
      ] 
    } 
]. 

此刻我有一台服务器上的客户端发布到队列中。

我有另一个客户端运行在EC2之外的服务器上,它需要使用来自同一个队列的数据(我不能在EC2上运行,因为消耗会进行大量的绘图/图形操作)。

当我尝试使用了一些测试代码

try { 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.setUri("amqp://****:****@****:5672/"); 
    connection = factory.newConnection(); 
} catch (IOException e) { 
    e.printStackTrace(); 

}

我收到以下错误,外部客户端连接。然而。

com.rabbitmq.client.AuthenticationFailureException:ACCESS_REFUSED - 登录使用认证机制平原拒绝。有关详细信息,请参阅代理日志文件 。

但是,代理日志文件中没有任何内容,就好像我从未尝试过连接一样。 我试着用工厂的各个getter/setter方法连接,我一直在使用不同的端口(与开放起来一起)尝试。

我在想,如果我需要使用SSL或不连接到EC2但是从网络上阅读它似乎像它应该只是工作,但我不能完全肯定。我找不到任何成功实现我想要做的事情并记录下来的例子。

在此先感谢

回答

2

的回答很干脆,我需要指定主机是我用SSH来在同一个IP。我试图使用我认为应指向同一台机器的EC2实例实例的Elastic IP/public dns。

虽然我没有尝试很多事情,比如建立一个SSL连接是没有必要的。

所有这一切需要的是:

  1. 使用rabbitmqctrl创建RabbitMQ的用户,并赋予其相应的权限
  2. 打开通过安全组菜单上EC2所需要的端口(默认为5672)
  3. 使用客户端库连接到正确的主机名/用户名/密码/端口,其中主机名与您通常使用的机器相同。
+0

感谢保罗!!!!你保存了我的下一个小时的谷歌搜索:D – doniyor 2018-01-16 13:30:30

相关问题