Rabbitmq - 从 C# 连接到集群

Dev*_*N D 2 .net c# rabbitmq

我们创建了一个具有两个节点(rabbit 和rabbit1)的 RabbitMQ 集群。我们有 4 个队列,按照http://www.rabbitmq.com/clustering.htmlhttp://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");
}
Run Code Online (Sandbox Code Playgroud)

集群应该如何处理?

par*_*man 6

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

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