AWS SQS несколько DLQ - PullRequest
       119

AWS SQS несколько DLQ

0 голосов
/ 04 августа 2020

у нас сейчас есть очередь sqs для обработки входящих данных. Есть ли рекомендуемый способ управления двумя DLQ для одной очереди?

  • если есть ошибка синтаксического анализа входящих данных, то я хочу переместить сообщение непосредственно в DLQ "userInput" без повторных попыток
  • если наш mon go находится на maxConnections, или возникает какая-либо другая ошибка, тогда должна иметь место настроенная политика переадресации

Нужно ли мне вручную помещать сообщение в dlq для первого сценария, или есть способ получше?

Спасибо!

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Очередь Amazon SQS имеет только одну очередь недоставленных сообщений .

Если сообщение читается из очереди SQS более определенного количества раз, сообщение можно переместить в Очередь недоставленных писем для последующей обработки. Однако нет никакого контроля над тем, при каких условиях будет отправлено сообщение в очередь недоставленных писем. Это просто основано на том, что количество извлеченных сообщений превышает maxReceiveCount.

См.: Очереди недоставленных сообщений Amazon SQS

Обратите внимание, что сам SQS не обрабатывает сообщение. Скорее у вас будет приложение или функция AWS Lambda, которая считывает сообщение из очереди и обрабатывает сообщение. Следовательно, вы можете запрограммировать желаемую функциональность (проверку входящих данных, ответ на Mon go maxConnections) в код, обрабатывающий сообщение от SQS. Если она обнаруживает такую ​​проблему, эта программа может отправить сообщение в указанную очередь c, а затем удалить исходное сообщение из исходной очереди SQS.

Это будет иметь такое же поведение, как и "несколько DLQ". ", за исключением того, что ваш код отвечает за logi c перемещения сообщений в эти очереди, а не Amazon SQS делает это.

0 голосов
/ 04 августа 2020

SQS Поддерживает только Single DLQ.

В качестве альтернативы вы могли бы сделать следующее: пусть Consumer из **Queue** обработает ваш первый случай. Значение "если есть ошибка разбора входящих данных" Пусть Потребитель Переместит его в другой queue.

И Второй случай из redrive policy будет обрабатываться автоматически и перемещаться в Real DLQ после maxReceiveCount

0 голосов
/ 04 августа 2020

У вас может быть только один DLQ для очереди.

введите описание изображения здесь

Однако вы можете подписать лямбда-функцию на этот DLQ.

Лямбда-функция могла обрабатывать «плохие» сообщения и распределяется по другим очередям DQL. Таким образом, у вас могут быть дополнительные DLQ, для которых функция будет фильтровать сообщения.

...