首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在RMQ .NET中指定多个连接点?

是否可以在RMQ .NET中指定多个连接点?
EN

Stack Overflow用户
提问于 2016-04-17 23:07:44
回答 2查看 2K关注 0票数 5

正如标题所述,我希望为RMQ .NET ConnectionFactory提供多个URI,希望它将自动转到第一个可用URI,而不是局限于单个URI。

设置

使用终端( Docker的一部分),我创建了四个容器,每个容器都在RMQ实例上运行。我对RMQ节点进行了如下集群:

  • 下游(node1和node2)
  • 上游(node3和node4)

下游节点与上游节点共享一个联邦队列,以提高吞吐量。

使用

我用C#编写了一个简单的控制台应用程序,它将生成消息并将消息发布到node4 (主要的上游RMQ实例)。

我想测试我的RMQ配置的冗余/自动故障转移,因为我已经为AutomaticRecoveryEnabled(文档)和TopologyRecoveryEnabled(文档)设置了标志,并设置了联邦队列设置。

但是,RMQ .NET库提供的.NET似乎不支持指定多个URI (文档)。因此,在处理节点下降时切换时,我不得不手动编写代码--我通过捕获节点不再可访问时抛出的异常,然后点击所有节点来查看哪个节点处于活动状态。

是否有一种方法可以为ConnectionFactory提供多个兔子端点,使其能够自动进行故障转移?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-20 12:59:23

使用pivotal提供的C#客户端,no。恐怕你必须做你正在做的事情。

票数 1
EN

Stack Overflow用户

发布于 2016-04-20 14:07:06

如果您查看ConnectionFactory,它可以创建与主机列表的连接。

代码语言:javascript
复制
    /// <summary>
    /// Create a connection using a list of hostnames. The first reachable
    /// hostname will be used initially. Subsequent hostname picks are determined
    /// by the <see cref="IHostnameSelector" /> configured.
    /// </summary>
    /// <param name="hostnames">
    /// List of hostnames to use for the initial
    /// connection and recovery.
    /// </param>
    /// <returns>Open connection</returns>
    /// <exception cref="BrokerUnreachableException">
    /// When no hostname was reachable.
    /// </exception>
    public IConnection CreateConnection(IList<string> hostnames)
    {
        return CreateConnection(hostnames, null);
    }

顺便说一句,下面的代码:

代码语言:javascript
复制
ConnectionFactory factory = new ConnectionFactory();
factory.Uri = "amqp://user:pass@hostName:port/vhost";
IConnection conn = factory.CreateConnection();

将使用单个元素列表调用CreateConnection({UriHostname})

如果您需要一个不同集群之间的连接列表(不同的vhost、用户名、密码.),那么答案是否定的,所以不能用关键客户端这样做。只要主机名改变,我就可以工作了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36683201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档