#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.