我们已经创建了一个包含两个节点(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/