Rebus是否可以配置为在RabbitMQ中将错误队列类型设置为quorum



我们有一个三节点RabbitMq集群,我们使用Rebus来生成和使用Rabbit的消息。我们处理的消息在数据安全方面至关重要,因此我们在RabbitMq中使用定额队列。

现在的问题是,即使我们有一个兔子集群,我们也有一个单点故障;当承载Rebus错误队列的节点变得不可用时,就会发生这种情况。似乎有两个选项,要么镜像RabbitMQ中的错误队列,要么将错误队列设置为仲裁队列。

我找到了一种将输入队列类型设置为quorum的方法:

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。RabbitMq7.2.0能够像上面的.InputQueueOptions(...)一样自定义.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();

从而实现你所追求的🙂

最新更新