簡體   English   中英

使用RabbitMQ將消息發送到遠程服務器

[英]Send message to remote server with RabbitMQ

我最近遇到了一個問題。 我試圖使用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,已向防火牆添加了規則,以允許端口5672和15672上的UDP和TCP進行入站連接。 這些還會是傳出端口嗎? 我想我也必須允許我台式機上的這些端口。 我知道我的數據包在本地發送和工作,經過多次測試。 沒有超時,我只是無法使該遠程連接正常工作。 我希望有幫助!

我認為創建該連接是正確的,但是您是否配置了代理服務器(Rabbitmq)?

如果不是,則開始時,代理服務器的默認用戶名是guest,密碼是guest。

但是問題是,禁止來賓用戶遠程連接到代理。 它只能通過本地主機進行連接。

請通過添加新配置服務器:

  • 用戶
  • 密碼
  • vhost [虛擬主機提供邏輯分組和資源分離]。

要么

要允許來賓用戶從遠程主機連接,應將loopback_users配置項設置為[]。 完整的配置代碼如下:

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

為了更好地理解和闡明這些問題的答案,我作了簡要說明。

  • userName:您的Rabbitmq服務器登錄用戶名
  • 密碼:登錄密碼
  • virtualHost:您創建的virtualHost名稱。 默認虛擬主機為“ /”
  • hostName:您的主機服務器名稱(rabbitmq代理所在的位置)或IP地址。
  • hostPortNumber:您的主機服務器端口號

您也可以使用URI創建連接:

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

我希望它會很好。 如果您對此答案有任何疑問,請讓我在下面發表評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM