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日志