1
resposta

receive-message só retorna 1 mensagem por vez

Olá,

Enviei 2 mensagens (estas aparecem na aws como disponíveis) e quando executo o comando para receber as mensagens, mesmo utilizando o parâmetro --max-number-of-messages 10 só retorna 1 por vez ... fica intercalando a cada requisição .. executo o código, retorna a primeira mensagem, executo novamente, retorna a segunda mensagem ...

Como retornar as 2 disponíveis na mesma requisição?

Obrigado

1 resposta

Olá, Rafael!

Pelo que você descreveu, parece que o AWS SQS não está retornando todas as mensagens disponíveis, mesmo com a utilização do parâmetro --max-number-of-messages 10. Isso pode ocorrer devido a algumas características inerentes ao funcionamento do SQS.

O SQS não garante a entrega de todas as mensagens em uma única requisição, mesmo que existam várias mensagens na fila e você tenha configurado para receber mais de uma. Isso ocorre porque o SQS foi projetado para ser altamente disponível e distribuído, o que significa que as mensagens não estão necessariamente todas armazenadas no mesmo lugar. Portanto, uma única solicitação de recebimento de mensagem pode não conseguir acessar todas as mensagens disponíveis na fila.

Além disso, o SQS utiliza um mecanismo de "short polling" por padrão, o que significa que a solicitação de recebimento de mensagens retorna imediatamente, mesmo que a fila esteja vazia. Isso pode resultar em receber menos mensagens do que as disponíveis na fila.

Para tentar resolver o seu problema, você pode tentar utilizar o "long polling". O "long polling" é um processo onde o SQS espera até que uma mensagem esteja disponível na fila para responder a uma solicitação de recebimento de mensagem. Você pode habilitar o "long polling" definindo o parâmetro WaitTimeSeconds para um valor maior que zero.

Aqui está um exemplo de como você pode fazer isso:

aws sqs receive-message --queue-url URL_DA_SUA_FILA --wait-time-seconds 20 --max-number-of-messages 10

Nesse exemplo, o SQS espera até 20 segundos por uma mensagem para responder à solicitação de recebimento de mensagem.

Espero que isso possa te ajudar a entender melhor o funcionamento do SQS e a resolver o seu problema. Lembre-se, porém, que o SQS pode não retornar todas as mensagens em uma única requisição, mesmo com o "long polling" habilitado.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software