c# - Rabbitmq - 从 C# 连接到集群

标签 c# .net rabbitmq

我们已经创建了一个包含两个节点(rabbit 和 rabbit1)的 RabbitMQ 集群。我们有 4 个队列,按照 http://www.rabbitmq.com/clustering.html 配置为高可用队列和 http://www.rabbitmq.com/ha.html

在集群之前,我们曾经使用下面的代码片段连接到节点。

var factory = new ConnectionFactory(){ HostName = _rabbitMQ_Hostname, UserName = _rabbitMQ_Username, Password = _rabbitMQ_Password};
            
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
    channel.QueueDeclare(queue: _autoCancellationPNS_QueueName,
    durable: true,
    exclusive: false,
    autoDelete: false,
    arguments: null);

    string message = appointmentId.ToString();
    var body = Encoding.UTF8.GetBytes(message);
    IBasicProperties properties = channel.CreateBasicProperties();
    properties.DeliveryMode = 2;
    channel.BasicPublish(exchange: _rabbitMQ_Exchange,
        routingKey: _autoCancellationPNS_RoutingKey,
        basicProperties: properties,
        body: body);
    returnMessage.ShortMessage = "Added to queue";
    returnMessage.LongMessage = "Added to queue";
    logger.Debug("|Added to queue");
}

我们应该如何处理集群?

最佳答案

RabbitMQ.Client 支持连接到多个主机已有一年多了。它已在 pull request #92 中修复.您应该能够执行以下操作

using (var connection = connectionFactory.CreateConnection(hostList))
using (var channel = connection.CreateModel())
{

}

但是,使用这种方法,您需要自己执行所有恢复等操作。大约一年前,我们在 EasyNetQ 客户端的稳定性方面遇到了很大的问题,但自从我们开始使用 RawRabbit 以来我们的集群环境,从来没有真正遇到过问题。

免责声明:我是 RawRabbit 的创建者。

关于c# - Rabbitmq - 从 C# 连接到集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39767825/

相关文章:

c# - 来自 C# 应用程序的加密

c# - 使用 WCF 和同步框架通过 HTTP 同步 SQL Server 2008 数据库

.net - 使用用户身份验证通过 net sdk 连接数据湖的最佳方式是什么

c# - 我应该将每个类放在单独的文件中吗?

docker - 如何在 Docker 容器中配置 rabbitmq.config?

c# - 如何计算带有 sin、cos 和其他函数的表达式?

c# - 简易喷油器 : Factory classes that need to create classes with dependencies

c# - 线程安全的StreamWriter C#怎么做呢? 2个

c - 消费消息时内存泄漏 - RabbitMQ C 库

java - 使用 SpringAMQP 时 RabbitMQ SSL 握手失败