Rebus 可以配置为在 RabbitMQ 中将错误队列类型设置为仲裁吗?
Can Rebus be configured to set error queue type to quorum in RabbitMQ?
我们有一个三节点 RabbitMq 集群,我们正在使用 Rebus 来生成和使用来自 Rabbit 的消息。我们处理的消息在数据安全方面至关重要,因此我们在 RabbitMq 中使用仲裁队列。
现在的问题是,即使我们有一个 rabbit 集群,我们也会有单点故障;它发生在托管 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(...)
– 这意味着您的代码可以扩展到
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();
从而实现你想要的
我们有一个三节点 RabbitMq 集群,我们正在使用 Rebus 来生成和使用来自 Rabbit 的消息。我们处理的消息在数据安全方面至关重要,因此我们在 RabbitMq 中使用仲裁队列。
现在的问题是,即使我们有一个 rabbit 集群,我们也会有单点故障;它发生在托管 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(...)
– 这意味着您的代码可以扩展到
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();
从而实现你想要的