使用RabbitMQ向远程服务器发送消息

时间:2015-10-03 01:39:22

标签: java rabbitmq amqp

我最近遇到了一个问题。我正在尝试使用RabbitMQ和Java将数据包发送到远程服务器很长一段时间,我真的需要一些帮助。这是我的代码看起来像

ConnectionFactory factory = new ConnectionFactory();
//factory.setHost("localhost");
factory.setUsername("dev");
factory.setPassword("/*user password*/");
factory.setVirtualHost("/"); //not really sure what this means
factory.setHost("/*remote server IP*/"); //is this correct
factory.setPort(5672);
connection = factory.newConnection();

我正在使用Windows Server 2012,我已经在防火墙中添加了规则以允许UDP和&端口5672和15672上的TCP用于入站连接。这些也是传出的端口吗?我想我也必须在桌面上允许这些端口。我知道我的数据包在本地发送和工作,经过多次测试。我只是无法在没有超时的情况下使远程连接工作。我很乐意帮忙!

1 个答案:

答案 0 :(得分:0)

我认为您创建此连接是正确的,但您是否配置了代理服务器(Rabbitmq)?

如果没有,则在开始时,代理服务器的默认用户名是guest,密码是guest。

但问题是,访客用户被禁止远程连接到代理。它只能通过本地主机连接。

请通过添加新内容来配置您的服务器:

  • 用户
  • 密码
  • vhost [虚拟主机提供逻辑分组和分离 资源。

要允许guest虚拟机用户从远程主机进行连接,应将loopback_users配置项设置为[]。完整的配置代码如下所示:

[{rabbit,[{loopback_users,[]}]}]。

为了更好地理解和澄清这些问题的答案,我简要解释了一下。

  • userName:您的Rabbitmq服务器登录用户名
  • 密码:登录密码
  • virtualHost:您创建的virtualHost名称。默认vhost是“/”
  • hostName:您的主机服务器名称(rabbitmq代理所在的位置)或 IP地址。
  • hostPortNumber:您的主机服务器端口号

您也可以使用URI来创建连接:

ConnectionFactory factory = new ConnectionFactory();
factory.
setUri("amqp://userName:password@hostName:portNumber/virtualHost");
Connection conn = factory.newConnection();

我希望它能正常运作。如果您对此答案有任何疑问,请允许我发表评论。