2015-10-03 50 views
0

最近我一直在遇到問題。我試圖使用RabbitMQ和Java將數據包發送到遠程服務器很長一段時間,我真的需要一些幫助。這裏是我的代碼是什麼樣子用RabbitMQ發送消息到遠程服務器

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。這些也會成爲傳出的端口嗎?我想我必須允許我的桌面上的這些端口。我知道我的數據包在本地發送和工作,測試了很多次。我無法讓遠程連接在沒有超時的情況下工作。我很樂意幫忙!

+1

您只需要tcp 5672。端口15672用於管理端口。你的問題到底是什麼?你有沒有試過打開也傳出?因爲你需要它 – Gabriele

+0

嗨Gabriele,謝謝你的迴應。我試圖做的就是將數據包從我的桌面發送到遠程服務器。每次都會有連接超時。我有我的RabbitMQ實例在服務器上運行,沒有任何東西到達那裏。如果有幫助,我正嘗試使用AMQP來完成此操作。我只是檢查了所有的端口都打開了,我什麼都沒有。我還設置了另一個用於連接的用戶帳戶。 – snurby77

+1

它通常是一個防火牆問題,請嘗試使用'telnet youserver 5672'並查看它是否有效 – Gabriele

回答

0

我認爲你是正確的創建這種連接,但你配置你的經紀服務器(Rabbitmq)?

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

但問題是,訪客用戶被禁止遠程連接到代理。它只能通過本地主機連接。

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

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

爲了允許來賓用戶從遠程主機連接,則應該設置loopback_users配置項爲[]。完整的配置代碼如下所示:

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

爲了更好地理解和澄清這些問題的答案,我簡要解釋了一下。

  • 用戶名:你的RabbitMQ服務器的登錄用戶名
  • 密碼:登錄密碼
  • 虛擬主機:你創建的虛擬主機名。默認虛擬主機是「/」
  • hostName:您的主機服務器名稱(其中rabbitmq代理所在的位置)或 IP地址。
  • hostPortNumber:你的主機服務器端口號

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

ConnectionFactory factory = new ConnectionFactory(); 
factory. 
setUri("amqp://userName:[email protected]:portNumber/virtualHost"); 
Connection conn = factory.newConnection(); 

我希望這將是工作的罰款。如果您對此答案有任何疑問,請讓我評論下面的內容。