2014-04-05 146 views
10

我試圖用EasyNetQ連接到RabbitMQ。 RabbitMQ位於遠程VM上。EasyNetQ無法發佈到RabbitMQ - PersistentChannel超時

_rabbitBus = RabbitHutch.CreateBus(
    string.Format("host={0};virtualhost={1}", 
    _hostSettings.Host, _hostSettings.VHost), 
    x => x.Register<IEasyNetQLogger>(l => _logger)); 

_rabbitBus.Subscribe<Message>(_topic, ReceiveMessage, m => m.WithTopic(_topic)); 

我得到一個TimeoutException The operation requested on PersistentChannel timed out.。 遠程VM正在迴應ping,端口5672和15672已打開(使用nmap進行檢查)。 可以從我的主機訪問RabbitMQ管理。

此外,如果RabbitMQ在我的本地機器上運行,它工作正常。 我試過從局域網中的其他電腦上連接到我的電腦上安裝的RabbitMQ,它也可以工作。

我已經到了一個假設,它與它在虛擬機上的事實有關,也許連接上有問題。但是,兔子的網絡管理再次正常。

也在EasyNetQ測試應用程序測試應用程序 - 在localhost,但不在遠程。

輸出如下:

DEBUG: Trying to connect 
ERROR: Failed to connect to Broker: '192.168.0.13', Port: 5672 VHost: '/'. 
     ExceptionMessage: 'None of the specified endpoints were reachable' 
ERROR: Failed to connected to any Broker. Retrying in 5000 ms 
  • EasyNetQ v0.28.4.242

回答

15

正如Mike建議我這樣做,然後檢查了權限。 「guest」用戶只能通過本地主機連接(見RabbitMQ Access Control。)試着增加用戶與使用管理界面的權限,然後連接如下

var _bus = RabbitHutch.CreateBus(string.Format("host={0};virtualhost={1};username={2};password={3}", 
_hostSettings.Host, _hostSettings.VHost, _hostSettings.UserName, _hostSettings.Password)); 
+0

謝謝,會嘗試儘快 –

+1

這救了我,雖然已經花了太多很多時間調查由於錯誤messaeg導致的網絡問題。謝謝。 – driis

+0

感謝你們,我的連接字符串中有空格導致相同的錯誤信息! – Scorch

8

你檢查你的憑據。默認的用戶名和密碼是'guest'和'guest'。該錯誤消息不是很有幫助。如果還存在驗證錯誤,您會收到'沒有指定的終端可到達'