我们创建了一个具有两个节点(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");
}
Run Code Online (Sandbox Code Playgroud)
集群应该如何处理?
一年多以来,它们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 的创建者。
| 归档时间: |
|
| 查看次数: |
8731 次 |
| 最近记录: |