O Amazon Simple Queue Service (Amazon SQS) é um web service que disponibiliza a você acesso a filas de mensagens que armazenam mensagens esperando processamento. Com o Amazon SQS, você pode criar rapidamente aplicações de enfileiramento de mensagens executáveis em qualquer computador.

O Amazon SQS oferece um serviço hospedado de enfileiramento confiável, seguro e altamente escalável para armazenar mensagens em trânsito entre computadores. Com o Amazon SQS, você pode movimentar dados entre componentes de aplicação diferentes e distribuídos, sem perder mensagens nem precisar que cada componente esteja sempre disponível. Você pode trocar dados confidenciais entre aplicações usando a SSE do Amazon SQS integrada ao AWS Key Management Service (KMS).

O Amazon SQS pode ajudar você a criar uma aplicação distribuída com componentes separados, trabalhando em conjunto com o Amazon Elastic Compute Cloud (Amazon EC2) e os outros web services de infraestrutura da AWS.

O Amazon SQS oferece dois tipos de filas para requisitos de aplicações diferentes:

Filas padrão
As filas oferecidas pelo Amazon SQS são predefinidas como padrão. Uma fila padrão permite que você tenha uma quantidade praticamente ilimitada de transações por segundo. As filas padrão garantem a entrega de uma mensagem pelo menos uma vez. Entretanto, ocasionalmente (devido à arquitetura altamente distribuída de alta capacidade), mais de uma cópia de uma mensagem pode ser entregue fora de ordem. As filas padrão oferecem a melhor ordenação possível, o que garante a entrega das mensagens na mesma ordem em que foram enviadas.

Filas FIFO – Novidade!
A fila FIFO (primeiro a entrar, primeiro a sair) complementa a fila padrão. Os recursos mais importantes desse tipo de fila são a entrega FIFO e o processamento exatamente uma vez: a ordem em que as mensagens são enviadas e recebidas é preservada com rigor e uma mensagem é entregue uma vez e permanece disponível até que o cliente a processe e a exclua. Duplicatas não são inseridas na fila. As filas FIFO também são compatíveis com grupos de mensagens que permitem vários fluxos ordenados dentro de uma única fila. As filas FIFO estão limitadas a 300 TPS (Transactions per second – Transações por segundo) por ação de API, mas têm os mesmos recursos das filas padrão.

 

Comece a usar a AWS gratuitamente

Crie uma conta gratuita
Ou faça login no Console

O nível gratuito da AWS inclui 1 milhão de solicitações com o Amazon Simple Queue Service (SQS).

Consulte os detalhes do nível gratuito da AWS »

A Capital One revela como usa o Amazon SQS para migrar aplicações bancárias essenciais para a nuvem.

sqs_thumb_reInvent2016-migrating-ent-messaging

O Amazon SQS pode ser facilmente acessado através do AWS Management Console, que oferece aos usuários uma interface baseada na web do tipo apontar-e-clicar para configurar e gerenciar o Amazon SQS.

O Amazon SQS emprega uma interface simples que é fácil de usar e altamente flexível. As seguintes solicitações são fornecidas:

Operações básicas de mensagem

  • SendMessage: envie mensagens a uma fila específica.
  • ReceiveMessage: retorne uma ou mais mensagens de uma fila específica.
  • DeleteMessage: remova uma mensagem recebida anteriormente de uma fila específica.
  • ChangeMessageVisibility: altere o tempo de espera de visibilidade da mensagem recebida anteriormente.

Operações de mensagens em lote

  • SendMessageBatch: envie várias mensagens a uma fila específica.
  • DeleteMessageBatch: remova várias mensagens recebidas previamente de uma fila específica.
  • ChangeMessageVisibilityBatch: altere o tempo de espera de visibilidade de várias mensagens recebidas previamente.

Gerenciamento básico de filas

  • CreateQueue: crie filas para uso com a conta da AWS.
  • ListQueues: liste as filas existentes.
  • DeleteQueue: exclua uma das suas filas.
  • PurgeQueue: exclua todas as mensagens em uma fila.

Gerenciamento avançado de filas

  • SetQueueAttributes: controle as definições de fila, como o tempo de espera de visibilidade (período em que as mensagens ficam bloqueadas após sua leitura, de modo a não serem lidas novamente), um valor de atraso ou parâmetros de Dead Letter Queue.
  • GetQueueAttributes: obtenha informações sobre uma fila, como o tempo de espera de visibilidade, o número de mensagens na fila ou o tamanho máximo de uma mensagem.
  • GetQueueUrl: obtenha o URL da fila.
  • AddPermission: adicione o compartilhamento de filas para outra conta da AWS com relação a uma fila específica.
  • RemovePermission: remova uma conta da AWS do compartilhamento de filas com relação a uma fila específica.
  • ListDeadLetterSourceQueues: relacione as filas anexadas a uma Dead Letter Queue.

Para obter mais detalhes, consulte a referência sobre a API do Amazon SQS.

As mensagens que estão armazenadas no Amazon SQS têm um ciclo de vida que é fácil de gerenciar, mas assegura que todas as mensagens sejam processadas.

  1. Um sistema que precisa enviar uma mensagem selecionará uma fila do Amazon SQS, e usará o SendMessage para adicionar uma nova mensagem a ele.
  2. Um sistema diferente que processa mensagens precisa de mais mensagens para processar, portanto ele chama ReceiveMessage e essa mensagem é retornada.
  3. Assim que uma mensagem tiver sido retornada por ReceiveMessage, ela não será retornada por nenhum outro ReceiveMessage até que o tempo de espera de visibilidade transcorra. Isso impede que vários clientes processem a mesma mensagem de uma só vez.
  4. Se o sistema que processa mensagens encerrar com êxito o processamento desta mensagem, ele chamará DeleteMessage, que removerá a mensagem da fila, de forma que mais ninguém irá processá-la. Se o sistema apresentar falha no processamento da mensagem, ele será lido por outra chamada ReceiveMessage assim que o tempo de espera de visibilidade transcorrer.
  5. Se você associou uma fila Dead Letter a uma fila de origem, as mensagens serão movidas para a fila Dead Letter após o número máximo de tentativas de entrega que você especificou ser atingido.
  • Os desenvolvedores podem criar diversas filas do Amazon SQS com um número ilimitado de mensagens.
    • Um fila pode ser criada em minha região.
    • A carga da mensagem pode conter até 256 KB de texto em qualquer formato. Cada ‘parte’ de 64 KB da carga é cobrada como 1 solicitação. Por exemplo, uma única chamada de API com uma carga de 256 KB será cobrada como quatro solicitações.
    • As mensagens podem ser enviadas, recebidas ou excluídas em lotes de até 10 mensagens ou 256 KB. Lotes custam o mesmo que mensagens únicas, o que significa que o SQS pode ser ainda mais compensador para os clientes que usam agrupamento em lotes.
    • Para enviar mensagens maiores que 256¬KB, você pode usar o Amazon SQS Extended Client Library for Java, que usa o Amazon S3 para armazenar a carga da mensagem.  Será enviada uma referência à carga da mensagem usando o SQS.
    • A sondagem longa reduz a sondagem externa para ajudar a minimizar o custo e receber novas mensagens o mais rápido possível. Quando a sua fila está vazia, as solicitações de sondagem longa aguardam até 20 segundos até a próxima mensagem chegar. As solicitações de sondagem longa custam o mesmo que as solicitações comuns.
    • As mensagens podem ser retidas nas filas por até 14 dias.
    • As mensagens podem ser enviadas e lidas simultaneamente.
  • Quando uma mensagem é recebida, ela torna-se "bloqueada" durante o processamento. Isso impede que outros computadores processem a mensagem simultaneamente. Se houver falha no processamento da mensagem, o bloqueio expirará e a mensagem será disponibilizada novamente. Caso o aplicativo precise de mais tempo para o processamento, a expiração do "bloqueio" poderá ser alterada dinamicamente por meio da operação ChangeMessageVisibility.
  • Os desenvolvedores podem compartilhar com segurança as filas do Amazon SQS de modo anônimo ou com contas específicas da AWS. O compartilhamento de filas também pode ser restringido pelo endereço IP e pelo período do dia.
  • NOVIDADE! A SSE protege o conteúdo de mensagens nas filas do Amazon SQS usando chaves gerenciadas no AWS Key Management Service (AWS KMS). A SSE criptografa mensagens assim que o Amazon SQS as recebe. As mensagens são armazenadas em um formato criptografado e o Amazon SQS as descriptografa apenas quando elas são enviadas para um usuário autorizado.
  • Quando combinado com o Amazon Simple Notification Service (SNS), os desenvolvedores podem realizar o "fan-out" de mensagens idênticas para várias filas de SQS padrão. Com o fan-out, uma mensagem publicada em um tópico SNS é distribuída a várias filas de SQS padrão em paralelo.  Usando o fan-out, os desenvolvedores podem criar aplicativos que usufruam do processamento assíncrono e paralelo.  Por exemplo, os desenvolvedores poderiam publicar uma mensagem para um tópico toda vez que uma nova imagem for carregada.  Processos independentes, cada um fazendo a leitura de uma fila separada, podem gerar miniaturas, executar reconhecimento de imagens e armazenar metadados sobre a imagem. No momento, o SNS não é compatível com a distribuição FIFO e, por isso, o fan-out para filas FIFO não é compatível.
  • Os desenvolvedores podem lidar com mensagens travadas (mensagens que não foram processadas com êxito por um cliente) com as Dead Letter Queues. Quando a contagem máxima de recebimentos de uma mensagem for ultrapassada, ela será transferida para a Dead Letter Queue (DLQ) associada à fila de origem. Os desenvolvedores podem criar processos de consumo distintos para DLQs, o que pode ajudar na análise e na compreensão do motivo pelo qual as mensagens ficaram retidas. A DLQs devem ser do mesmo tipo da fila de origem (padrão ou FIFO).

As filas de mensagens do Amazon SQS podem ser usadas com outros serviços da AWS, como Redshift, DynamoDB, RDS, EC2, ECS, Lambda e S3, para aumentar a escalabilidade e a confiabilidade de aplicativos distribuídos. Veja a seguir alguns padrões de projeto comuns:

  • Filas de trabalho: dissocie componentes de um aplicativo distribuído que podem não processar o mesmo volume de trabalho simultaneamente.
  • Operações de buffer e lote: acrescente escalabilidade e confiabilidade à sua arquitetura, e suavize picos de volume temporários sem perder mensagens ou aumentar a latência.
  • Descarregamento de solicitações: remova operações lentas de caminhos de solicitação interativos enfileirando a solicitação.
  • Fan-out: combine o SQS com o Simple Notification Service (SNS) para enviar cópias idênticas de uma mensagem a várias filas em paralelo.
  • Prioridade: use filas separadas para disponibilizar a priorização do trabalho.
  • Escalabilidade: como as filas de mensagens dissociam seus processos, torna-se fácil expandir a taxa de envio e recebimento de mensagens: basta adicionar outro processo. 
  • Resiliência: a falha de parte do seu sistema não o desativa por inteiro inteiro. As filas de mensagens dissociam componentes do seu sistema, portanto, se um processo que estiver fazendo a leitura de mensagens da fila falhar, as mensagens ainda poderão ser adicionadas à fila para serem processadas quando o sistema for recuperado.

O uso deste serviço está sujeito ao Acordo do cliente da Amazon Web Services.