Почему сообщения SqS иногда остаются в очереди в очереди

Я использую очереди Amazon SQS очень простым способом. Обычно сообщения пишутся и сразу видны и читаются. Иногда сообщение пишется и остается в полете (невидимым) в очереди в течение нескольких минут. Я вижу это из консоли. Время ожидания получения сообщения - 0, а видимость по умолчанию - 5 секунд. Так будет продолжаться в течение нескольких минут или до тех пор, пока не будет написано новое сообщение, которое каким-то образом его освободит. Задержка в несколько секунд в порядке, но не более 60 секунд.

Есть 8 читательских потоков, которые долго опрашивают всегда, поэтому не то, чтобы что-то не пыталось это прочитать, они есть.

редактировать Для ясности: ни одно из обращений потребителя не возвращает никаких сообщений вообще, и это происходит независимо от того, открыта ли консоль или нет. В этом сценарии используется только одно сообщение, и оно просто находится в очереди, невидимой для потребителей.

Кто-нибудь еще видел такое поведение и что я могу сделать, чтобы улучшить его?

Вот SDK для Java, который я использую:

<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk</artifactId>
  <version>1.5.2</version>
</dependency>     

Вот код, который выполняет чтение (max = 10, maxwait = 0 начальная конфигурация):

void read(MessageConsumer consumer) {

  List<Message> messages = read(max, maxWait);

  for (Message message : messages) {
    if (tryConsume(consumer, message)) {
      delete(message.getReceiptHandle());
    }
  }
}

private List<Message> read(int max, int maxWait) {

  AmazonSQS sqs = getClient();
  ReceiveMessageRequest rq = new ReceiveMessageRequest(queueUrl);
  rq.setMaxNumberOfMessages(max);
  rq.setWaitTimeSeconds(maxWait);
  List<Message> messages = sqs.receiveMessage(rq).getMessages();

  if (messages.size() > 0) {
    LOG.info("read {} messages from SQS queue",messages.size());
  }

  return messages;
}

Строка журнала «читать ...» никогда не появляется, когда это происходит, и именно это заставляет меня войти с консолью и посмотреть, есть ли сообщение там или нет, и оно есть.

Ответы на вопрос(2)

Ваш ответ на вопрос