Мост событий SQS один раз в минуту

#amazon-sqs #aws-event-bridge

#amazon-sqs #aws-мост событий

Вопрос:

Мы смотрим на мост событий, чтобы предоставить нам запланированную задачу, добавляемую в наш SQS один раз в минуту.

Мы смотрим на мост событий, чтобы это произошло. Пока он правильно помещает сообщения в очередь, но мы пытаемся запланировать его один раз в минуту и замечаем, что очередь получает сообщения только один раз в пять минут, иногда шесть минут.

Похоже, что метрики указывают, что происходит вызов; однако очередь не получает их в указанные временные рамки.

Соображения

  • Очередь SQS FIFO — дедупликация
  • Постоянная строка JSON

Причина того, что сообщения не отображаются с заданным интервалом, связана с этим в документации AWS:

Токен, используемый для дедупликации отправленных сообщений. Если сообщение с определенным идентификатором дедупликации сообщения отправляется успешно, все сообщения, отправленные с тем же идентификатором дедупликации сообщения, принимаются успешно, но не доставляются в течение 5-минутного интервала дедупликации

Открыт для предложений и будет искать обходной путь.

Обновить

Я попытался использовать входной преобразователь для исправления, добавив время как однозначно изменяющийся элемент в сообщении очереди; однако, все еще не прошло менее 5 минут.

Переменный ввод

 {"addedOn":"$.time"}
 

Сообщение

 {"AddedOn":<addedOn>}
 

Ответ №1:

Опрос очереди, встроенный в SQS, просто не опрашивал мое обновленное количество сообщений, превышающее 10. Как только я удалил старые сообщения, время было правильным, и оно обновлялось 1 / мин.

Ответ заключается в том, что если вы собираетесь использовать постоянную строку, это должно быть для запланированных заданий продолжительностью более 5 минут.

Добавление информации здесь, несмотря на избыточность вопроса для связанных поисковых запросов Google:

Токен, используемый для дедупликации отправленных сообщений. Если сообщение с определенным идентификатором дедупликации сообщения отправляется успешно, все сообщения, отправленные с тем же идентификатором дедупликации сообщения, принимаются успешно, но не доставляются в течение 5-минутного интервала дедупликации

Несмотря на то, что сообщения являются уникальным событием один раз в минуту, константа (текст в формате JSON), не являющаяся уникальной, по-прежнему считала ее дубликатом для удаления.

Для решения я переключился на входной трансформатор

Пример события и какие другие поля вы можете добавить в качестве переменных:

 {
 "version": "0",
 "id": "7bf73129-1428-4cd3-a780-95db273d1602",
 "detail-type": "EC2 Instance State-change Notification",
 "source": "aws.ec2",
 "account": "123456789012",
 "time": "2015-11-11T21:29:54Z",
 "region": "us-east-1",
 "resources": [
 "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
 ],
 "detail": {
 "instance-id": "i-0123456789",
 "state": "RUNNING"
 }
}
 

Мне нужна была уникальная переменная, поэтому время было очевидным выбором.

Ввод для входного преобразователя

Путь ввода:

 {"addedOn":"$.time"}
 

Шаблон:

 {"AddedOn":<addedOn>}
 

Документация

Кроме того, обнаружено, что переход к отказу от использования очередей FIFO является потенциальным решением, если это простой вариант и для будущих разработчиков SQS.