0

配置RabbitMQ的集羣考慮以下情形:與NServiceBus

我有兩臺服務器,他們每個人都有排隊的RabbitMQ安裝和它們形成一個集羣。我已經使用鏡像將它們配置爲HA隊列。

  • 節點A(具有主隊列)
  • 節點B(具有從隊列)

我們使用NServiceBus作爲消息傳遞框架。我們有一個服務A(負載平衡的WCF服務),它應該將消息發佈到RabbitMQ交換機和服務B(集羣),這應該使消息出隊並處理它們。問題是我應該如何在兩個節點上配置NServicebus。我不能爲的ConnectionString像這樣指定單個主機名:

<connectionStrings> 
    <add name="NServiceBus/Transport" connectionString="host=nodeA, nodeB" /> 
</connectionStrings> 

這是因爲該功能已經在當前NServiceBus版本中使用。這說得通。我也無法指定羣集名稱。

<connectionStrings> 
    <add name="NServiceBus/Transport" connectionString="host=clustername" /> 
</connectionStrings> 

此選項不起作用。

我也試過localhost,它適用於節點A,但不適用於節點B(它具有從隊列)。

我應該定義爲主機以使其工作(在兩種服務A和B上)?節點B將主隊列中的消息出隊需要什麼?

有可能是我不明白,但請幫助我。

回答

0

RabbitMQ docs提供有關從客戶端連接到集羣的建議:這不是RabbitMQ的問題,但您必須使用其他技術,如負載平衡器。

一般來說,這是不可取的節點的主機名或IP地址來烤到客戶端應用程序:這引入了靈活性,並需要客戶端應用程序進行編輯,重新編譯和重新部署應在集羣變化的配置或節點的數量在集羣中發生變化。相反,我們推薦一種更抽象的方法:這可能是一個動態DNS服務,它具有非常短的TTL配置,或者一個普通的TCP負載均衡器,或者使用起搏器或類似技術實現的某種移動IP。

NServiceBus遵循以下建議:RabbitMQ的運輸訴3.x的下降設施連接字符串詳細here

1

你需要把本地主機在ConnectionString像這樣指定多個主機名:

<connectionStrings> 
    <add name="NServiceBus/Transport" connectionString=" host=localhost" /> 
</connectionStrings> 

然後它工作:)