连接到RabbitMQ的EC2上来自外部客户端
类似的问题已经问 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但是从网络上阅读它似乎像它应该只是工作,但我不能完全肯定。我找不到任何成功实现我想要做的事情并记录下来的例子。
在此先感谢
的回答很干脆,我需要指定主机是我用SSH来在同一个IP。我试图使用我认为应指向同一台机器的EC2实例实例的Elastic IP/public dns。
虽然我没有尝试很多事情,比如建立一个SSL连接是没有必要的。
所有这一切需要的是:
- 使用rabbitmqctrl创建RabbitMQ的用户,并赋予其相应的权限
- 打开通过安全组菜单上EC2所需要的端口(默认为5672)
- 使用客户端库连接到正确的主机名/用户名/密码/端口,其中主机名与您通常使用的机器相同。
感谢保罗!!!!你保存了我的下一个小时的谷歌搜索:D – doniyor 2018-01-16 13:30:30