2015-04-23 160 views
0

我有一個問題,NServiceBus不會自動創建所有隊列。NServiceBus不創建RabbitMQ隊列

如果我運行任何端點(不包括MVC Web客戶端)的我碰到下面的錯誤。 (端點已經使用ServiceMatrix產生)

2015年4月23日10:50:12.241 ERROR NServiceBus此端點無法 接觸的ServiceControl後端報告端點信息。 您的端點中安裝了ServiceCont rol插件。 但是,請確保Particul ar ServiceControl服務是安裝在本機上的 ,或者如果在另一臺機器上運行ServiceContro,然後確保您的端點的app.config/web.cfg,AppSettings具有以下密鑰集適當地: ServiceControl /隊列。例如:其他詳細信息:{0} NServiceBus.Unicast.Queuing.QueueNotFoundException: 收件人不存在的交換---> RabbitMQ.Client.Exceptions.AlreadyClosedException:已包含: AMQP操作被中斷:AMQP關閉原因,由 Peer,code = 404,text =「NOT_FOUND - no exchange 'special.servicecontrol'in vhost'/'」,classId = 60,methodId = 40, cause = at RabbitMQ.Client .Impl.ModelBase.WaitForConfirms(時間跨度 超時,布爾& TIMEDOUT)...

所以它看起來像particular.servicecontrol是沒有被創建。然而,其餘的隊列確實被創建。

如果我運行web項目中,我也得到一個異常:{「無法訪問已釋放的對象\ r \ n對象名稱:‘CommonObjectBuilder’。」}。這個錯誤發生在「Bus.Create(config)」並且沒有隊列被創建。

if (Debugger.IsAttached) 
{ 

    config.UsePersistence<InMemoryPersistence>(); 

    config.EnableInstallers(); 
} 

var bus = Bus.Create(config); 

如果我手動添加special.servicecontrol到隊列中,所有的錯誤消失。

+0

請您詳細說明 - 您已經安裝了ServiceControl並將其設置爲使用RabbitMQ,但它沒有創建自己的隊列?你能夠啓動ServiceControl嗎? –

回答

0

那麼到底基本上我的錯誤是沒有更新我的ServiceControl使用RabbitMQ的。

NServiceBus不發生這種情況時正確的錯誤消息很好地失敗。實際上,ServiceControl負責創建特定的.servicecontrol隊列,並且當這個隊列丟失時,總線本身的所有地獄崩潰。

但是它不是作爲Multi Transport installation documentation討論的那樣簡單。簡而言之,NSB5與RabbitMQ v2.1.2(最新穩定版)協同工作時,ServiceControl二進制文件需要v1.1.5。因此,人們必須從 「RabbitMQ.Client V3.2.1」 和 「的RabbitMQ V2.1.2」 的NuGet包二進制文件複製在 「C:\ Program Files文件(x86)的\特定軟件\的ServiceControl」 其他人得到

傳輸配置失敗。無法通過設置 'TransportType'來解析類型 'NServiceBus.RabbitMQ,NServiceBus.Transports.RabbitMQ'。確保組件存在,並且該類型爲設置中正確定義的

運行RabbitMQ for ServiceControl的安裝時。

我找到了解決方案here