Ведение журнала SQS для вставки и удаления из очереди
Я использую Amazon SQS для своего приложения в контексте производителя / потребителя. Я хочу включить ведение журнала на уровне очереди, чтобы видеть элементы, помещенные в очередь и удаленные из нее позже. Как я могу это сделать?
Я прочитал следующее:
Однако этого недостаточно для моего варианта использования. Разве нам не разрешено делать это с очередями AWS?
3 ответа
То, чего вы пытаетесь достичь, невозможно с помощью SQS. Возможные решения включают в себя:
- Реализуйте некоторый промежуточный API между вашим производителем и очередью SQS. Уровень API будет регистрировать запросы от производителя.
- Используйте Kinesis вместо SQS. Kinesis позволяет воспроизводить / анализировать записи, созданные за последние 24 часа.
- Реализовать вход в систему потребителя.
- Используйте лямбда-функцию, которая будет (с помощью триггеров правил CloudWatch Event) считывать очередь SQS раз в минуту, регистрировать записи и помещать их в другую очередь SQS для последующей обработки потребителем.
- Используйте другой тип очереди, которая позволяет вести журнал. Например, в Redis для этого есть команда MONITOR.
В дополнение к ответу Сергея Ковалева теперь есть возможность запуска лямбда-функций событиями SQS.
Вы просто:
выберите очередь SQS, которую вы хотите, в качестве источника события для вашей лямбда-функции
Я понимаю твою боль. Даже у меня была проблема, когда SQS вел себя не так, как ожидалось, и я искал журналы, чтобы понять проблему.
SQS не публикует журналы, все API-интерфейсы SQS синхронны, поэтому клиент получает соответствующий ответ.
Решения, упомянутые выше, являются обходными путями. Среди них наличие входа в систему для производства и потребителя может не сильно помочь. Потому что в моем случае у меня было логирование при производстве и потребителе, но все же, с чем именно столкнулся SQS и когда, не будет видно.