Модерируемые сообщения на SQS

#amazon-web-services #aws-lambda #message-queue #messaging #amazon-sqs

#amazon-веб-службы #aws-lambda #очередь сообщений #обмен сообщениями #amazon-sqs

Вопрос:

У меня есть вопрос о варианте использования обмена сообщениями.

У нас есть очередь в AWS SQS, скажем, origQueue и в этой очереди есть потребление сообщений на основе лямбды на основе «из коробки».

Теперь, чтобы удовлетворить одну конкретную функцию потребления сообщений на основе модерации (на основе флага ‘isModerated’ в сообщении), я думаю создать еще одну параллельную очередь (которая была бы просто модерируемой версией вышеупомянутой очереди). В этой «модерируемой» очереди мы не хотим автоматического потребления, скорее мы ищем потребление на основе модерируемого шага. Это означает, что любая лямбда-функция не будет прослушивать эту очередь постоянно.

Одна из моих мыслей заключается в том, чтобы запустить лямбда-выражение во время выполнения (после завершения модерации), которое в основном удалит из очереди модерируемую очередь, удалит флаг ‘isModerated’ из сообщений и повторно поставит их в очередь фактической очереди, т. Е. origQueue.

Но прежде чем идти этим путем, я просто хотел собрать другие потенциальные идеи. Существует ли какая-либо готовая функция AWS или какой-либо шаблон для решения этой проблемы с потреблением сообщений на основе триггеров?

Ответ №1:

Если сообщения поступают в очередь из SNS, вы можете использовать фильтрацию сообщений до того, как они попадут в очередь:

https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html

Комментарии:

1. Я избегал SNS, потому что мой вариант использования был просто проблемой производителя и потребителя. «разветвление» не требуется. Внедрение SNS только для фильтрации сообщений не будет излишеством?

2. Возможно, но во многих случаях имеет смысл отделить производителя от потребителя с помощью SNS, и это позволит вам выполнять фильтрацию. Это также означает, что вы можете изменять очереди, добавлять несколько очередей (одну модерируемую, другую нет) или любой другой дизайн, который вы хотите, без необходимости изменять код производителя (т. Е. SNS отвечает за обработку потребителей).

3. Я убежден, что наличие SNS может помочь и в долгосрочной перспективе. Спасибо!