16,EasyNetQ-羣集支持

EasyNetQ支持RabbitMQ羣集,無需部署負載均衡器。html

只需在鏈接字符串中列出羣集的節點...前端

var bus = RabbitHutch.CreateBus("host=ubuntu:5672,ubuntu:5673");

在這個例子中,咱們在一臺機器上創建了一個集羣'ubuntu',端口5672上的節點1和端口5673上的節點2上。當CreateBus語句執行時,EasyNetQ將嘗試鏈接到列出的第一臺主機(ubuntu:5672)。 若是鏈接失敗,它會嘗試鏈接到列出的第二臺主機(ubuntu:5673)。 若是兩個節點都不可用,則它將位於重試循環中,每五秒鐘嘗試鏈接兩臺服務器。 它將全部這些活動記錄到註冊的IEasyNetQLogger。 若是第一個節點不可用,您可能會看到相似這樣的內容:ubuntu

DEBUG: Trying to connect
ERROR: Failed to connect to Broker: 'ubuntu', Port: 5672 VHost: '/'. ExceptionMessage: 'None of the specified endpoints were reachable'
DEBUG: OnConnected event fired
INFO: Connected to RabbitMQ. Broker: 'ubuntu', Port: 5674, VHost: '/'

若是EasyNetQ鏈接的節點發生故障,EasyNetQ將嘗試鏈接到下一個列出的節點。 一旦鏈接,它將從新申報全部交易所和隊列,並從新啓動全部消費者。 如下是一個示例日誌記錄,顯示一個節點出現故障,而後EasyNetQ鏈接到另外一個節點並從新建立訂戶:服務器

INFO: Disconnected from RabbitMQ Broker
DEBUG: Trying to connect
DEBUG: OnConnected event fired
DEBUG: Re-creating subscribers
INFO: Connected to RabbitMQ. Broker: 'ubuntu', Port: 5674, VHost: '/'

1,隨機主機選擇負載均衡

若是您有多個使用EasyNetQ鏈接到RabbitMQ羣集的服務,它們將首先鏈接到其各自鏈接字符串中的第一個列出的節點。 若是您打算使用負載平衡功能,則應考慮切換到RandomClusterHostSelectionStrategy。 像這樣配置它:dom

var bus = RabbitHutch.CreateBus("host=myfirsthost,mysecondhost", x => x.Register<IClusterHostSelectionStrategy<ConnectionFactoryInfo>, RandomClusterHostSelectionStrategy<ConnectionFactoryInfo>>());

在這個片斷中,咱們已經替換了RandomClusterHostSelectionStrategy的默認IClusterHostSelectionStrategy,它將隨機選擇主機。 您能夠在這裏找到更多有關替換EasyNetQ組件的信息。spa

2,考慮使用專用的負載平衡器代理

EasyNetQ集羣支持的替代方案是使用專用的前端代理。 有關詳細信息,請參閱RabbitMQ集羣指南的結尾:http://www.rabbitmq.com/clustering.html日誌

相關文章
相關標籤/搜索