Tecnologias/03 - Filas/03 - Amazon SQS2 min
Amazon SQS
Definição
Amazon Simple Queue Service (SQS) é um serviço de filas gerenciado pela AWS. O produtor publica mensagens e os consumidores solicitam mensagens para processar. A AWS mantém a infraestrutura da fila; a aplicação continua responsável pelo significado do conteúdo, pelo tratamento de falhas e pelos efeitos do processamento.
O SQS usa APIs como SendMessage, ReceiveMessage e DeleteMessage. Receber não
remove a mensagem: a exclusão faz parte da confirmação de que o trabalho terminou.
Referência: funcionamento do SQS.
Exemplo de fluxo
flowchart LR
A[API de pedidos] --> Q[Fila SQS]
Q --> W1[Worker 1]
Q --> W2[Worker 2]
W1 --> B[Banco de dados]
W2 --> B
A API publica um evento com o identificador do pedido. Os workers dividem o trabalho. Se faturamento e notificações precisam receber cada evento de forma independente, podem usar filas próprias assinando um tópico SNS. Uma única fila compartilhada representa consumidores competindo pelo trabalho.
Polling
Polling é solicitar mensagens à fila. No short polling, a resposta é imediata e pode vir vazia. No long polling, a chamada espera uma mensagem por até o tempo configurado, com máximo de 20 segundos. Se houver mensagem antes disso, pode responder antes do prazo. Esse mecanismo reduz respostas vazias; não é uma espera obrigatória antes de cada entrega. Referência: short e long polling.
SQS, SNS e RabbitMQ
- SQS: mantém mensagens para consumo posterior por meio da API da AWS.
- SNS: publica em tópicos para distribuir eventos a assinaturas, inclusive filas SQS.
- RabbitMQ: oferece protocolos e mecanismos próprios, como exchanges e bindings; Amazon MQ pode hospedá-lo como serviço gerenciado.
Relação com S3
O corpo de uma mensagem SQS pode ter até 1 MiB. Para conteúdos maiores, uma abordagem é guardar o conteúdo no S3 e enviar sua referência. Isso exige coordenar permissões, existência e tempo de retenção do objeto com o consumo da mensagem. Referência: limites de mensagens.
Aprofundamento aplicado
A fila absorve picos dentro de um orçamento
Suponha entrada de 500 mensagens/s por dois minutos e capacidade de processamento de 200/s. O acúmulo cresce aproximadamente 36 mil mensagens durante o pico, desconsiderando retries e variação. O sistema precisa ter capacidade excedente depois para reduzir o atraso.
A API pode continuar aceitando mensagens enquanto o tempo até o efeito cresce. Uma métrica de idade ajuda a ligar o estado da fila ao prazo prometido ao usuário.
Operações em lote exigem olhar cada resultado
APIs de lote podem devolver sucesso parcial. Uma resposta HTTP bem-sucedida não significa que todos os itens foram aceitos. Retente os itens que falharam conforme seu erro e preserve a identidade lógica das mensagens. Referência: SendMessageBatch.
Exercício: modele um lote com oito sucessos e dois erros transitórios. Resultado esperado: reenviar os dois itens sem recriar oito tarefas legítimas; o consumidor continua preparado para duplicidade em situações incertas.
Relacionado: 2. Standard, FIFO e Deduplicação no SQS · 1. Amazon S3 · SNS.
Parte de Amazon SQS