Можно ли настроить Rebus для установки типа очереди ошибок как кворум в 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 вручную не работает, потому что Ребус жалуется, что тип очереди не классический.


person kronaldo    schedule 01.10.2020    source источник


Ответы (1)


Rebus.RabbitMq 7.2.0 имеет возможность настраивать .DefaultQueueOptions(...), как вы это делаете с .InputQueueOptions(...) выше - это означает, что ваш код можно расширить до

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();

и таким образом добьетесь того, что вам нужно ????

person mookid8000    schedule 02.10.2020
comment
Молниеносное исправление, спасибо за обновленный пакет. Вроде работает как шарм =). - person kronaldo; 02.10.2020