5

我试图找出通过 wcf 使用 rabbitmq 集群的最佳解决方案是什么。

当前设置:

  1. 2 个 IIS Web 服务器(作为消息生成并通过 amqp wcf 客户端将消息发布到队列)。
  2. 2台带有rabbitmq代理的服务器(集群镜像队列,rabbit1和rabbit2)
  3. Windows 服务(工作人员),带有监听传入消息的托管 amqp wcf 服务。

Web角色向rabbit1节点发布消息,worker也监听rabbit1节点。如果 rabbit1 节点出现故障,系统(web 和 worker)应该切换到 rabbit2。这就是问题所在,如何以更优雅的方式实现这一点,而不是在应用程序代码中处理连接失败。

我现在看到的第一个也是唯一的方法是使用 wcf4 路由备份端点功能。这种方式只能解决客户端(Web 角色)的问题,但不能解决 wcf 服务端(工作者角色)的问题。

4

1 回答 1

3

一种方法是围绕您的服务主机创建一个包装器,用于存储连接字符串列表(可以来自配置)。

将处理程序添加到服务故障事件,您可以在其中使用不同的连接字符串关闭和重新打开主机。

于 2012-10-17T20:57:02.387 回答