Por que as mensagens SqS às vezes permanecem em trânsito na fila?

Estou usando filas do Amazon SQS de maneira muito simples. Geralmente, as mensagens são gravadas e imediatamente visíveis e lidas. Ocasionalmente, uma mensagem é gravada e permanece In-Flight (Not Visible) na fila por vários minutos. Eu posso ver isso no console. O tempo de espera de recebimento de mensagens é 0 e a visibilidade padrão é de 5 segundos. Permanecerá assim por vários minutos, ou até que uma nova mensagem seja escrita, que de alguma forma a libere. Um atraso de alguns segundos está ok, mas mais de 60 segundos não está ok.

Há 8 threads de leitor que são sempre longas pesquisas, então não é que algo não esteja tentando lê-lo, elas são.

Editar : Para ser claro, nenhuma das leituras do consumidor está retornando nenhuma mensagem e isso acontece independentemente de o console estar ou não aberto. Nesse cenário, apenas uma mensagem está envolvida e está apenas na fila invisível para os consumidores.

Alguém mais viu esse comportamento e o que posso fazer para melhorá-lo?

Aqui está o sdk para java que estou usando:

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

Aqui está o código que faz a leitura (max = 10, maxwait = 0 startup configuration):

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;
}

A linha de log para "read .." nunca aparece quando isso está acontecendo, e é o que me faz ir com o console e ver se a mensagem está lá ou não, e é.

questionAnswers(2)

yourAnswerToTheQuestion