EasyNetQ支持RabbitMQ群集,无需部署负载均衡器。

只需在连接字符串中列出群集的节点...

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

在这个例子中,我们在一台机器上建立了一个集群'ubuntu',端口5672上的节点1和端口5673上的节点2上。当CreateBus语句执行时,EasyNetQ将尝试连接到列出的第一台主机(ubuntu:5672)。 如果连接失败,它会尝试连接到列出的第二台主机(ubuntu:5673)。 如果两个节点都不可用,则它将位于重试循环中,每五秒钟尝试连接两台服务器。 它将所有这些活动记录到注册的IEasyNetQLogger。 如果第一个节点不可用,您可能会看到类似这样的内容:

DEBUG: Trying to connect
ERROR: Failed to connect to Broker: 'ubuntu', Port: VHost: '/'. ExceptionMessage: 'None of the specified endpoints were reachable'
DEBUG: OnConnected event fired
INFO: Connected to RabbitMQ. Broker: 'ubuntu', Port: , 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: , VHost: '/'

1,随机主机选择

如果您有多个使用EasyNetQ连接到RabbitMQ群集的服务,它们将首先连接到其各自连接字符串中的第一个列出的节点。 如果您打算使用负载平衡功能,则应考虑切换到RandomClusterHostSelectionStrategy。 像这样配置它:

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

在这个片段中,我们已经替换了RandomClusterHostSelectionStrategy的默认IClusterHostSelectionStrategy,它将随机选择主机。 您可以在这里找到更多有关替换EasyNetQ组件的信息。

2,考虑使用专用的负载平衡器

EasyNetQ集群支持的替代方案是使用专用的前端代理。 有关详细信息,请参阅RabbitMQ集群指南的结尾:http://www.rabbitmq.com/clustering.html

16,EasyNetQ-群集支持的更多相关文章

  1. SmartIDE v0.1.16 已经发布 - 支持阿里&蚂蚁开源的国产 IDE OpenSumi

    SmartIDE v0.1.16 (Build 3137) 已经在2022年4月19日发布到稳定版通道,我们在这个版本中增加了阿里和蚂蚁发布的国产IDE OpenSumi的支持,以及其他一些改进.Sm ...

  2. 解决VMware下安装Ubuntu 16.04 不支持1920X1080分辨率的问题

    解决方法: flashmx@ubuntu:~$ cvt # 192.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz Modeline -hsync +vsync fl ...

  3. 精通awk系列(16):gawk支持的正则表达式

    回到: Linux系列文章 Shell系列文章 Awk系列文章 gawk支持的正则 . # 匹配任意字符,包括换行符 ^ $ [...] [^...] | + * ? () {m} {m,} {m,n ...

  4. Hyper-V 2012 R2 故障转移群集

    和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...

  5. 第八章 Hyper-V 2012 R2 故障转移群集

    和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...

  6. 【EasyNetQ】- 连接RabbitMQ

    如果您习惯于处理与SQL Server等关系数据库的连接,那么您可能会发现EasyNetQ处理连接的方式有点奇怪.与关系数据库的通信始终由客户端启动.客户端打开连接,发出SQL命令,在必要时处理结果, ...

  7. 配置Windows群集

    故障转移群集 l  一个群集支持8个节点,(64位操作系统支持16个节点) l  可以使用故障转移群集的服务:SQL Server(数据库), Exchange(邮件),文件和打印服务,DHCP服务等 ...

  8. 基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装

    一.测试需求介绍与准备 公司计划服务器迁移过程计划同时上线SQL Server2012,引入SQL Server2012群集提高高可用性,需要对SQL Server2012群集技术进行研究.测试,确保 ...

  9. Android 原生 Intent 分享支持的那些事

    版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 一.前言 对于一个 App ...

  10. cocos2dx 从2.2.6 到3.16 升级流水记录

    一个cocos2dx项目从2.2.6 升级至3.16 的过程,由于没有直升工具,类库升级也变动很大,有一部分需要手工完工升级.此记录供参考 1. 没有采用项目直升方式,先新建一个3.16的项目,然后把 ...

随机推荐

  1. Mybatis入门学习笔记

    1.定义别名 在sqlMapConfig.xml中,编写如下代码: <!-- 定义别名 --> <typeAliases> <!-- type: 需要映射的类型 alia ...

  2. Windows Server 2008 R2 服务器系统安装图文教程

    https://www.jb51.net/os/535658.html http://www.machenike.com/article.php?id=207

  3. Dubbo服务容错

    当一个服务调用另一个远程服务出现错误时的外观 Dubbo提供了多种容错方案,默认值为failover(重试) 1).Failover Cluster(默认) 失败自动切换,当出现失败,重试其他服务器, ...

  4. SpringBoot整合Email(电子邮件服务)

    (1).导入starter依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  5. Modelsim SE 安装

    FPGA开发过程中,代码编写完成后,往往是需要通过第三方仿真工具去验证设计功能的正确性.本章介绍最常用的仿真工具--Modelsim SE的安装过程. 1.1.1.Modelsim SE安装 本节主要 ...

  6. Win10 + Visual Studio 2017 下 OpenCV无法显示图像的问题

    测试代码如下: #include "stdafx.h" #include<opencv2\opencv.hpp> #include<opencv2\highgui ...

  7. adb启动和停止android app方法

    一.启动app adb shell am start  包名/MainActivity 上面涉及到的包名及mainactivity获取办法 方法一: 1.adb shell 2.dumpsys act ...

  8. Solution of Publishing failed with multiple errors Error copying file static\

    1.前言 由于系统被IT打了防病毒补丁,然后启动web项目一直出现Publishing failed with multiple errors Error copying file static... ...

  9. Java String str = new String(value)和String str = value区别

    示例代码: public class StringDemo2 { public static void main(String[] args) { String s1 = new String(&qu ...

  10. unittest常用的断言方法

    unittest常用的断言方法 #msg:判断不成立时需要反馈的字符串 assertEqual(self, first, second, msg=None) --判断两个参数相等:first == s ...