[英]Can Rebus be configured to set error queue type to quorum in RabbitMQ?
我们有一个三节点的 RabbitMq 集群,我们使用 Rebus 来生成和使用来自 Rabbit 的消息。 我们处理的消息在数据安全方面至关重要,因此我们在 RabbitMq 中使用仲裁队列。
现在的问题是,即使我们有一个兔子集群,我们也有一个单点故障; 它发生在承载 Rebus 错误队列的节点变得不可用时。 似乎有两种选择,要么在 RabbitMQ 中镜像错误队列,要么使错误队列成为仲裁队列。
我找到了一种将输入队列类型设置为法定人数的方法:
Configure.With(activator)
.Logging(l => l.ColoredConsole())
.Transport(t =>
t.UseRabbitMq(
"connectionString", "MyQueue")
.InputQueueOptions(queueConfig =>
{
queueConfig.AddArgument("x-queue-type", "quorum");
}))
.Start();
Rebus 有没有办法让错误队列也成为法定队列? 是否有充分的理由不将错误队列作为仲裁队列而使用镜像?
在 Rabbit 中手动创建错误队列作为仲裁队列不起作用,因为 Rebus 抱怨队列类型不是“经典”。
Rebus.RabbitMq 7.2.0 能够像上面的.InputQueueOptions(...)
.DefaultQueueOptions(...)
一样自定义.DefaultQueueOptions(...)
– 这意味着您的代码可以扩展为
Configure.With(activator)
.Logging(l => l.ColoredConsole())
.Transport(t =>
t.UseRabbitMq("connectionString", "MyQueue")
.InputQueueOptions(queueConfig => queueConfig.AddArgument("x-queue-type", "quorum"))
.DefaultQueueOptions(queueConfig => queueConfig.AddArgument("x-queue-type", "quorum"))
)
.Start();
从而实现你所追求的🙂
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.