Возвращает ли SQS все сообщения со следующим кодом? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь понять, как будет вести себя следующий код:

    // receive messages from the queue
    List<Message> messages = sqs.receiveMessage(queueUrl).getMessages();

    // delete messages from the queue
    for (Message m : messages) {
        sqs.deleteMessage(queueUrl, m.getReceiptHandle());
    }
  1. Будет ли он возвращать все сообщения в очереди?
  2. Если нет, то какперебрать все сообщения в очереди?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

1 - Нет, поскольку Марк сказал, что он возвращает только до 10 сообщений.

2 - У вас есть два варианта:

Первый: отправляйте запрос каждые 1 минуту (например) иполучать сообщения в очереди, обрабатывать их и удалять.Итак, ваша функция извлекает их все через несколько минут.

Секунда: используйте функцию AWS Lambda для обработки вашей очереди.Для получения дополнительной информации прочитайте следующий документ: https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

Если вы хотите обрабатывать много сообщений, значит, второй способ лучше из-за производительности и затрат.(AWS взимает плату с вашего общего запроса в SQS, поэтому в первом случае, если у вас нет сообщений в очереди, ваше приложение отправляет запрос каждую минуту без возврата)

0 голосов
/ 20 сентября 2018

Нет, запрос receiveMessage вернет не более 10 сообщений.

...