У меня есть очередь SQS, которая постоянно заполняется потребителем данных, и теперь я пытаюсь создать службу, которая вытащит эти данные из SQS с помощью Python boto.
То, как я это разработал, заключается в том, что у меня будет 10-20 потоков, которые пытаются читать сообщения из очереди SQS, а затем делать то, что они должны делать с данными (бизнес-логикой), прежде чем вернуться в очередь, чтобы получить следующую партию данных, как только они будут сделаны. Если нет данных, они будут просто ждать, пока не будут доступны некоторые данные.
У меня есть две области, о которых я не уверен в этом дизайне
- Это вопрос вызова метода receive_message() с длинным значением time_out, и если ничего не возвращается за 20 секунд (максимально допустимое), просто повторите попытку? Или существует метод блокировки, который возвращается только после того, как доступны данные?
- Я заметил, что как только я получаю сообщение, он не удаляется из очереди, мне нужно получить сообщение, а затем отправить другой запрос после его получения, чтобы удалить его из очереди? похоже, немного перебор.
Спасибо