Какая альтернатива в AWS для отправки сообщения из SNS в SQS FIFO? - PullRequest
0 голосов
/ 13 июля 2020

У меня такая ситуация, когда я использую Amazon SNS + SQS для обработки событий домена.

Обычно при событии домена я публикую sh сообщение для SNS, и на SNS подписаны две очереди SQS. Поскольку я заметил, что SQS поддерживает FIFO, но SNS не поддерживает FIFO, я пытаюсь найти решение, как одновременно доставлять сообщение A в несколько очередей SQS FIFO?

Что у меня было до сих пор

  • Publi sh Сообщение A в SNS
  • Разослать сообщение A в SQS 1 и SQS 2

Все, о чем я могу думать сейчас, это

  • Publi sh сообщение A в SQS A
  • Используйте код, чтобы извлечь сообщение A из SQS и опубликовать sh его в SQS 1 и SQS 2

Не совсем atomi c процесс, который я искал ...

Есть ли альтернатива этому подходу?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Если ваша цель - отправить сообщение в две очереди FIFO Amazon SQS, я бы рекомендовал:

  • Иметь Amazon SNS запускать AWS лямбда-функцию.
  • Функция Lambda может отправлять одно и то же сообщение в обе очереди Amazon SQS

Она эффективно выполняет вентилятор- через Lambda , а не через SNS.

Функция Lambda также может извлекать идентификатор группы сообщений , который она может предоставить с сообщением SQS, что позволит выполнять параллельную обработку сообщения, сохраняя при этом FIFO в группе сообщений. Например, все сообщения, поступающие из определенного источника, будут FIFO, но могут обрабатываться параллельно с сообщениями из других источников. Это очень мощная возможность, которая была бы недоступна, если бы Amazon SNS пересылал сообщение.

0 голосов
/ 13 июля 2020

Вы можете подумать об использовании AWS Kinesis Data stream. Одна из его функций - ordering.

Из часто задаваемых вопросов: https://aws.amazon.com/kinesis/data-streams/faqs/

Когда мне следует использовать Amazon Kinesis Data Streams и когда мне следует использовать Amazon SQS?

Порядок записей. Например, вы хотите передать данные журнала с хоста приложения на хост обработки / архивации, сохраняя порядок операторов журнала.

Вы можете обрабатывать события из Kinesis в SQS.

...