繁体   English   中英

Rebus 可以配置为将错误队列类型设置为 RabbitMQ 中的仲裁吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM