У меня есть активная очередь, которая будет иметь все сообщения от издателя. Мой потребитель читает эти сообщения и Acks/Nacks в зависимости от результата обработки сообщений.RabbitMQ - Как настроить условный DLX?
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
var processed = ProcessMessage(message)
if (processed)
channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
else
channel.BasicNack(deliveryTag: ea.DeliveryTag, multiple: false, requeue: true);
}
Мои вопросы
- Является ли установка
true
дляrequeue
параметра, когда оно правильно голыми? - Или нам нужно создать очередную очередь для повтора?
- Скажем, если я хочу переместить сообщение в DLX после повторной попытки в 10 раз? Как мне это сделать? Это код C# или может быть определено правило в очереди?
- Как узнать, что сообщение повторяется 10 раз? Предоставляет ли RabbitMQ какой-либо механизм или мне нужно вручную создать объект сообщения, чтобы содержать счетчик повторов?
Спасибо за ваши входы
Да, я также рассматриваю ту же статью. спасибо – techspider
Если у меня много запросов в WorkExchange в образце, как я могу обеспечить его только для WorkQueue1, но не для WorkQueue2? Параметр использует x-dead-letter-exchange, но не имеет очереди или ключа маршрутизации. – techspider
В этом случае вам понадобится дополнительный Exchange – Franklin