P: O que é o Amazon SQS?

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 uma fila hospedada confiável 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.

O Amazon SQS pode ajudar você a criar um aplicativo distribuído com componentes separados, trabalhando em conjunto com o Amazon Elastic Compute Cloud (Amazon EC2) e os outros serviços da Web de infraestrutura da AWS.

P: O que posso fazer com o Amazon SQS?

Como o Amazon SQS é altamente escalável, você paga apenas pelo que usar. Você pode começar com um aplicativo pequeno e depois ampliá-lo de acordo com as necessidades da empresa, sem comprometer o desempenho ou a confiabilidade. O Amazon SQS elimina as preocupações a respeito de como as suas mensagens são armazenadas e gerenciadas, além de ajudá-lo a focar-se na criação de aplicações baseadas em mensagens potentes e avançadas.

Aqui estão algumas ideias:

  • Integrar o Amazon SQS a outros serviços da AWS para tornar as aplicações mais confiáveis e flexíveis.
  • Usar o Amazon SQS para criar solicitações de trabalho tendo cada mensagem como uma tarefa a ser concluída por um processo. Permitir que um (ou vários) computadores leiam tarefas da fila de mensagens e as processem.
  • Criar uma arquitetura de microsserviços e usar filas de mensagens para conectar seus microsserviços.
  • Manter notificações de eventos empresariais importantes em uma fila de mensagens do Amazon SQS. Cada evento pode ter uma mensagem correspondente em uma fila de mensagens. Além disso, as aplicações que precisam estar cientes do evento podem ler e processar as mensagens.

P: Como posso começar a usar o Amazon SQS?

É possível criar uma fila do Amazon SQS e enviar uma mensagem em algumas etapas.

  1. No Console de gerenciamento da AWS, selecione SQS.
  2. Na página Create New Queue, verifique se você está na região correta, em seguida, digite o Queue Name, por exemplo, MyQueue.
  3. Consulte as descrições da Standard Queue e FIFO Queue e, em seguida, selecione um tipo de fila.
  4. Selecione Quick Create Queue.
    A fila foi criada.
  5. Selecione Go to Dashboard.
    A nova fila é selecionada na lista de filas.
  6. Na lista suspensa Queue Actions, selecione Send a Message.
    A caixa de diálogo Send a Message to MyQueue é exibida.
  7. Envie a mensagem.
    • Para enviar uma mensagem a uma fila padrão, digite o texto no Message Body e, em seguida, selecione Send Message.
    • Para enviar uma mensagem para uma fila FIFO, digite o texto no Message Body, digite o Message Group ID (obrigatório) e o Message Deduplication ID (obrigatório) e, em seguida, selecione Send Message.
    A mensagem será enviada e uma confirmação com os atributos da mensagem enviada será exibida.
  8. Para concluir, selecione Close.

Para obter mais informações, consulte o Guia do desenvolvedor do Amazon SQS e o código de exemplo na Central de recursos.

P: Quais são os benefícios do Amazon SQS em comparação com os sistemas de enfileiramento de mensagens domésticas ou em pacotes?

Em comparação com a criação do seu próprio software, o Amazon SQS disponibiliza várias vantagens para o gerenciamento de filas de mensagens ou para o uso de sistemas de enfileiramento de mensagens comerciais ou de código aberto que exigem um tempo inicial significativo para o desenvolvimento e a configuração.

Essas alternativas exigem manutenção de hardware contínua e recursos de administração de sistemas. A complexidade de configurar e gerenciar esses sistemas é agravada pela necessidade de um armazenamento redundante de mensagens que garanta que elas não serão perdidas no caso de falha do hardware.

Por outro lado, o Amazon SQS não exige sobrecarga de tarefas administrativas e necessita de pouca configuração. O Amazon SQS funciona em grande escala e processa bilhões de mensagens por dia. É possível aumentar ou reduzir a escala vertical da quantidade de tráfego que você envia sem precisar de nenhuma configuração. O Amazon SQS também proporciona uma durabilidade de mensagens substancialmente alta, oferecendo a você e aos seus stakeholders ainda mais segurança.

P: O Amazon SQS oferece ordenação de mensagens?

Sim. As filas first-in-first-out (FIFO, primeiro a entrar, primeiro a sair) preservam a ordem exata de envio e recebimento das mensagens. Se você utilizar uma fila FIFO, não é necessário inserir informações de sequenciamento nas mensagens. Por obter mais informações, consulte Lógica de fila FIFO no Guia do desenvolvedor do Amazon SQS.

As filas padrão fornecem um recurso de FIFO flexível que tenta preservar a ordem das mensagens. Entretanto, como as filas padrão foram criadas para ser altamente escaláveis, utilizando uma arquitetura altamente distribuída, não há garantias de recebimento de mensagens na ordem exata de envio.

P: O Amazon SQS garante a entrega das mensagens?

As filas padrão oferecem entrega pelo menos uma vez, ou seja, cada mensagem é entregue pelo menos uma vez.

As filas FIFO oferecem processamento único, ou seja, cada mensagem é entregue uma vez e continua disponível até ser processada e excluída por um consumidor. As repetições não são introduzidas na fila.

 

P: Qual a diferença do Amazon SQS para o Amazon SWF?

O Amazon SQS e o Amazon SWF são serviços que facilitam a integração de aplicativos ou microsserviços:

  • O Amazon Simple Queue Service (Amazon SQS) oferece filas hospedadas confiáveis e altamente escaláveis para armazenar mensagens enquanto se deslocam entre os aplicativos ou microsserviços. O Amazon SQS permite que você transfira dados entre componentes de aplicativo distribuídos e ajuda na dissociação deles.
  • O Amazon Simple Workflow Service (Amazon SWF) é um serviço da web que torna fácil a coordenação de trabalhos entre componentes de aplicativos distribuídos.

Veja a seguir as diferenças principais entre o Amazon SWF e o Amazon SQS:

  • As ações da API Amazon SWF são orientadas por tarefas. As ações da API do Amazon SQS são orientadas por mensagens.
  • O Amazon SWF acompanha todas as tarefas e eventos em um aplicativo. Com o Amazon SQS é necessário implementar seu próprio acompanhamento de nível de aplicativo, especialmente se o aplicativo usa filas múltiplas.
  • O Amazon SWF Console e as APIs de visibilidade oferecem uma visibilidade centrada no aplicativo, que possibilita a busca por execuções, a análise de detalhes de uma execução e o gerenciamento de execuções. O Amazon SQS requer a implementação dessas funcionalidades.
  • O Amazon SWF oferece recursos para simplificar o desenvolvimento do aplicativo, como a passagem de tarefas entre dados, sinalização, flexibilidade na distribuição de tarefas. O Amazon SQS requer a implementação de algumas funcionalidades do nível de aplicativo.
  • Além de um SDK principal para chamar APIs de serviço, o Amazon SWF oferece o AWS Flow Framework, com o qual você pode facilmente gravar aplicativos distribuídos utilizando construções de programação para estruturar interações assíncronas.

Embora você possa usar o Amazon SQS para criar fluxos de trabalho básicos para coordenar sua aplicação distribuída, é possível obter essa facilidade prontamente com o Amazon SWF, juntamente com outros recursos no nível da aplicação.

Nós recomendamos testar o Amazon SQS e o Amazon SWF para determinar qual solução se encaixa melhor às suas necessidades.

P: Qual a diferença entre o Amazon SQS e os streams do Amazon Kinesis Streams?

O Amazon SQS oferece uma fila hospedada confiável e altamente escalável para armazenar mensagens enquanto se deslocam entre aplicativos ou microsserviços. Ele movimenta dados entre os componentes distribuídos do aplicativo e ajuda a desacoplá-los. O Amazon SQS oferece construções de middleware comuns, como dead letter queues e gerenciamento tipo poison-pill. Também oferece uma API de web services genéricos e pode ser acessado por qualquer linguagem de programação suportada pelo AWS SDK. O Amazon SQS oferece suporte para filas padrão e FIFO.

Use o Amazon SQS quando precisar que cada mensagem única seja consumida apenas uma vez e nos casos a seguir:

  • Dissociar os componentes de um aplicativo: você tem uma fila de itens de trabalho e deseja acompanhar a conclusão de cada item de modo independente. O Amazon SQS monitora os resultados de confirmação/falha para que o aplicativo não precise manter um ponto de verificação/cursor persistente. Depois de configurar o visibility timeout, o Amazon SQS exclui as mensagens de reconhecimento e entrega novamente as mensagens com falha.
  • Configuração do atraso das mensagens individuais: você tem uma fila de trabalho e precisa agendar trabalhos individuais com um atraso. Com o Amazon SQS, você pode configurar mensagens individuais para atrasarem até 15 minutos.
  • Simultaneidade com aumento dinâmico ou de capacidade no tempo de leitura: você tem uma fila de trabalho e deseja adicionar mais leitores até a lista de pendências ser apagada. Com o Amazon Kinesis Streams, você pode escalar até um número suficiente de estilhaços (no entanto, é necessário provisionar estilhaços suficientes com antecedência). O Amazon SQS não requer pré-provisionamento.
  • Escalabilidade transparente: seu buffer solicita e a carga muda como resultado de picos de carga ocasionais ou do crescimento natural dos seus negócios. Como o Amazon SQS pode processar cada solicitação em buffer de forma independente, o Amazon SQS pode escalar de modo transparente para processar a carga sem instruções de provisionamento fornecidas por você.

Os Amazon Kinesis Stream permitem o processamento em tempo real para o streaming de big data, além da capacidade de leitura e reprodução dos registros para diversos aplicativos Amazon Kinesis. A Biblioteca de cliente do Amazon Kinesis (KCL) fornece todos os registros de uma determinada chave de partição para o mesmo processador de registros, facilitando a criação de vários aplicativos de leitura do mesmo Amazon Kinesis Stream (por exemplo, para contar, agregar ou filtrar).

Use os Amazon Kinesis Streams quando precisar de diversos consumidores para processar cada registro e nos casos de uso como:

  • Registros relacionados ao roteamento para o mesmo processador de registro: você faz o stream de MapReduce. Por exemplo, contagem e agregação são mais simples quando todos os registros para uma determinada chave são encaminhados para o mesmo processador de registro.
  • Permitir que diversos aplicativos consumam os mesmo stream de modo simultâneo: você tem um aplicativo que atualiza um painel em tempo real e outro que arquiva dados no Amazon Redshift. Você quer que os dois aplicativos consumam dados do mesmo stream de forma simultânea e independente.

P: A Amazon utiliza o Amazon SQS para seus próprios aplicativos?

Sim. Os desenvolvedores da Amazon usam o Amazon SQS para várias aplicações que processam grandes números de mensagens todos os dias. Processos empresariais essenciais da Amazon.com e da Amazon Web Services usam o Amazon SQS.


P: O que posso fazer com o nível gratuito do Amazon SQS?

O nível gratuito do Amazon SQS disponibiliza 1 milhão de solicitações por mês sem custo.

Muitas aplicações de pequena escala podem operar inteiramente dentro dos limites do nível gratuito. No entanto, cobranças de transferência de dados ainda podem ser aplicáveis. Para obter mais informações, consulte Amazon SQS Pricing.

O nível gratuito é uma oferta mensal. O uso gratuito não é acumulativo ao longo dos meses.

P: Qual é o custo do Amazon SQS?

Você paga apenas pelo que utilizar e não há taxa mínima.

O custo do Amazon SQS é calculado de acordo com a solicitação, além das cobranças por transferência de dados para dados transferidos para fora do Amazon SQS (exceto quando são transferidos para instâncias do Amazon EC2 ou funções do AWS Lambda dentro da mesma região). Para obter definições de preços detalhados por tipo de fila e região, consulte os Preços do Amazon SQS.

P: Serei cobrado por todas as solicitações do Amazon SQS?

Sim, para quaisquer solicitações além do nível gratuito. Todas as solicitações do Amazon SQS são passíveis de cobrança, além de serem faturadas usando a mesma taxa.

P: As operações em lote do Amazon SQS custam mais do que outras solicitações?

Não. Operações em lote (SendMessageBatch, DeleteMessageBatch e ChangeMessageVisibilityBatch) custam o mesmo que outras solicitações do Amazon SQS. Ao agrupar mensagens em lotes, você pode reduzir os custos do Amazon SQS.

P: Como serei cobrado pelo uso que eu fizer do Amazon SQS?

Não há taxas iniciais para começar a usar o Amazon SQS. No final do mês, seu cartão de crédito será automaticamente cobrado pelo uso do mês.

Você pode ver suas cobranças para o período de faturamento atual a qualquer momento no site da AWS:

  1. Faça login na sua conta da AWS.
  2. Na opção Your Web Services Account, selecione Account Activity.

P: Os preços incluem impostos?

A menos que seja indicado de outra forma, nossos preços não incluem quaisquer taxas ou impostos aplicáveis, como IVA ou imposto sobre vendas aplicável.

Para clientes com endereço de pagamento no Japão, o uso da AWS em qualquer região está sujeito ao imposto sobre utilização japonês. Para obter mais informações, consulte Amazon Web Services Consumption Tax FAQ.


P: Qual é a diferença entre uma fila padrão e uma fila FIFO?

Filas padrão

O Amazon SQS oferece padrão como o tipo de fila 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.

HTQv2

É possível utilizar filas de mensagem padrão em diversos cenários, contanto que o aplicativo possa processar mensagens que chegam mais de uma vez ou fora de ordem, por exemplo:

  • Desacoplar solicitações dinâmicas do usuário de trabalhos intensos em segundo plano: permite aos usuários enviar mídia, além redimensioná-la e codificá-la.
  • Alocar tarefas para nós com diversos operadores: processe uma alta quantidade de solicitações de validação de cartão de crédito.
  • Mensagens em lote para processamento futuro: agende diversas entradas para adicioná-las ao banco de dados.

Filas FIFO

A fila FIFO complementa a padrão. Os recursos mais importantes desse tipo de fila são Entrega FIFO (primeiro a entrar, primeiro a sair) e processamento único: a ordem na qual as mensagens são enviadas e recebidas é preservada, e uma mensagem é entregue uma vez, permanecendo disponível até ser processada e excluída por um consumidor; as repetições não são introduzidas na fila. As filas FIFO também oferecem suporte a grupos de mensagens que permitem grupos de diversas mensagens ordenadas em uma única fila. As filas FIFO estão limitadas a 300 TPS (transactions per second, transações por segundo), mas têm os mesmos recursos das filas padrão.
 

SOQ



As filas FIFO foram criadas para melhorar o sistema de mensagens entre aplicativos quando a ordem das operações e eventos é crítica, ou quando não há suporte para repetições, por exemplo:

  • Verifique se os comandos inseridos por usuários são executados na ordem correta.
  • Visualize o preço do produto correto ao enviar modificações de preço na ordem correta.
  • Impeça que um aluno se inscreva em um curso antes de criar uma conta.

P: Em quais regiões as filas FIFO estão disponíveis?

No momento, as filas FIFO estão disponíveis nas regiões Leste dos EUA (Ohio) e Oeste dos EUA (Oregon). Esse recurso será disponibilizado em mais regiões durante os próximos meses.

P: Quantas cópias de uma mensagem eu receberei?

As filas FIFO foram criadas para não introduzir mensagens repetidas. No entanto, o produtor da mensagem pode introduzir repetições em algumas situações: por exemplo, se o produtor envia uma mensagem, não recebe uma resposta e, em seguida, a envia novamente. As APIs do Amazon SQS oferecem funcionalidades de deduplicação que impedem o envio de mensagens repetidas. Qualquer repetição introduzida pelo produtor da mensagem é removida em um intervalo de cancelamento de duplicação de cinco minutos.

Para filas padrão, é possível receber ocasionalmente uma cópia repetida de uma mensagem (entrega única). Se você usar uma fila padrão, é necessário projetar os aplicativos para serem idempotentes (ou seja, não devem ser afetados de modo adverso durante o processamento da mesma mensagem mais de uma vez).

P: As filas do Amazon SQS utilizadas anteriormente serão filas FIFO?

Não. As filas padrão do Amazon SQS (o novo nome das filas existentes) permanecem inalteradas e ainda é possível criar filas padrão. Essas filas continuam a oferecer a maior escalabilidade e capacidade; entretanto, não há garantias de ordem e podem ocorrer repetições.

As filas padrão são adequadas para diversos cenários, como distribuição de trabalho com diversos consumidores idempotentes.

P: É possível converter a fila padrão atual em uma fila FIFO?

Não. Você deve selecionar o tipo de fila ao criá-la. No entanto, não é possível transformar em uma fila FIFO. Para obter mais informações, consulte Mudar de uma fila padrão para FIFO no Guia do desenvolvedor do Amazon SQS.

P: As filas FIFO do Amazon SQS são compatíveis com versões anteriores?

Para aproveitar a funcionalidade de filas FIFO, você deve utilizar o AWS SDK mais recente.

As filas FIFO usam as mesmas ações de API do que as filas padrão, e a mecânica de recebimento e exclusão de mensagens, bem como de alteração do visibility timeout, são as mesmas. Entretanto, ao enviar mensagens, é necessário especificar um ID de grupo de mensagens. Por obter mais informações, consulte a Lógica de fila FIFO no Guia do desenvolvedor do Amazon SQS.

Importante: você não pode converter uma fila padrão em uma fila FIFO. Para fazer a mudança, é necessário criar uma nova fila FIFO para o aplicativo ou excluir uma fila padrão atual e recriá-la como fila FIFO. Para obter mais informações, consulte Mudar de uma fila padrão para FIFO no Guia do desenvolvedor do Amazon SQS.

P: As filas FIFO do Amazon SQS são compatíveis com o Amazon Simple Notification Service (SNS)?

No momento, o Amazon SNS não é compatível com o encaminhamento de mensagens para filas FIFO. É possível usar o SNS para encaminhar mensagens para filas padrão.

P: As filas FIFO do Amazon SQS são compatíveis com o Cliente assíncrono de armazenamento em buffer do Amazon SQS, a Biblioteca de clientes estendida do Amazon SQS para Java ou o Cliente do Amazon SQS Java Message Service?

No momento, não. Esperamos atualizar essas bibliotecas de cliente em uma data posterior. É possível continuar a usar esses clientes com filas padrão do Amazon SQS.

P: Quais métricas da AWS CloudWatch são têm suporte para as filas FIFO do Amazon SQS?

As filas FIFO oferecem suporte a todas as métricas suportadas pelas filas padrão. Para filas FIFO, todas as métricas aproximadas retornam contagens precisas. Por exemplo, as seguintes métricas da AWS CloudWatch são suportadas:

  • ApproximateNumberOfMessagesDelayed – O número de mensagens na fila que estão atrasadas e indisponíveis para leitura imediata.
  • ApproximateNumberOfMessagesVisible – O número de mensagens disponíveis para recuperação da fila.
  • ApproximateNumberOfMessagesNotVisible – A quantidade de mensagens em andamento (enviado para um cliente, mas que não foram excluídas ou atingiram o fim da janela de visibilidade).

P: O que são grupos de mensagens?

As mensagens são agrupadas em "pacotes" distintos e ordenados na fila FIFO. Para cada ID de grupo de mensagens, todas as mensagens são enviadas e recebidas na ordem estrita. No entanto, as mensagens com valores de ID de grupo de mensagens diferentes podem ser enviadas e recebidas fora de ordem. Você deve associar um ID de grupo de mensagens à uma mensagem. Se você não fornecer um ID de grupo de mensagens, a ação resultará em falha.

Se diversos hosts (ou conversas diferentes no mesmo host) enviarem mensagens com o mesmo ID de grupo de mensagens e forem enviados para uma fila FIFO, o Amazon SQS entrega as mensagens na ordem de chegada para processamento. Para garantir que o Amazon SQS preserva a ordem de envio e recebimento das mensagens, verifique se diversos remetentes enviar cada mensagem com um ID de grupo de mensagens exclusivo.  

P: As filas FIFO do Amazon SQS suportam diversos produtores?

Sim. Um ou mais produtores podem enviar mensagens para uma fila FIFO. As mensagens são armazenadas na ordem em que são recebidas pelo Amazon SQS.

Se diversos produtores enviam mensagens em paralelo, sem aguardar pela resposta de sucesso das ações SendMessage ou SendMessageBatch, não é possível preservar a ordem entre os produtores. A resposta das ações SendMessage ou SendMessageBatch contém a sequência final que as filas FIFO utilizam para inserir mensagens na fila. Portanto, o código de produtor paralelo múltiplo pode determinar a ordem final das mensagens na fila.

P: As filas FIFO do Amazon SQS suportam diversos consumidores?

Sim. É recomendado utilizar um único consumidor por grupo de mensagens para suportar o processamento de mensagens na ordem correta. As filas FIFO oferecem mais opções ReceiveMessage com suporte a diversos cenários do consumidor:

  • Em sistemas de consumidor único altamente disponíveis, nos quais dois ou mais consumidores competem pela mensagem seguinte na fila, é possível configurar a fila para deixar a mensagem visível para outros consumidores somente depois que a mensagem em andamento for excluída ou o visibility timeout expirar. Portanto, somente um dos consumidores processará o lote seguinte de mensagens. Outras mensagens devem aguardar até o consumidor encerrar ou ocorrer falha.
  • No processamento de mensagens em paralelo, no qual diversos consumidores recebem mensagens, embora uma fila FIFO retorne mensagens na ordem, os consumidores podem observar que estão fora de ordem devido a problemas de rede.

P: É possível usar uma dead letter queue com filas FIFO?

Sim. No entanto, você deve usar uma dead letter queue FIFO com uma fila FIFO. (De modo semelhante, você pode usar somente uma dead letter queue padrão com uma fila padrão.)

P: Qual o limite da taxa de transferência para uma fila FIFO do Amazon SQS?

No momento, uma única fila FIFO suporta a taxa de transferência de até 300 transações por segundo (TPS). (uma fila padrão tem taxa de transferência ilimitada.)


P: Posso usar o Amazon SQS com outros serviços da AWS?

Sim. Você pode tornar suas aplicações mais flexíveis e escaláveis usando o Amazon SQS com serviços computacionais, como o Amazon EC2, o Amazon EC2 Container Service (Amazon ECS) e o AWS Lambda, como também com serviços de armazenamento e banco de dados, como o Amazon Simple Storage Service (Amazon S3) e o Amazon DynamoDB.

Um caso de uso comum é uma aplicação distribuída e separada, cujos vários módulos e componentes precisam se comunicar uns com os outros, mas não podem realizar a mesma quantidade de trabalho simultaneamente. Nesse caso, as filas de mensagens do Amazon SQS transportam mensagens a serem processadas pela aplicação que está em execução nas instâncias do Amazon EC2.

As instâncias do Amazon EC2 podem ler a fila de mensagens, processar o trabalho e, em seguida, publicar os resultados como mensagens para outra fila de mensagens do Amazon SQS (por exemplo, para processamento posterior por outra aplicação). Como o Amazon EC2 permite que as aplicações aumentem e diminuam a escala vertical de modo dinâmico, os desenvolvedores de aplicações podem variar o número de instâncias computacionais com base na quantidade de mensagens nas filas do Amazon SQS usando o Auto Scaling para garantir que os trabalhos sejam executados em tempo hábil.

P: Você pode me dar um caso de uso de exemplo do Amazon SQS?

Aqui mostramos como um site de transcodificação de vídeo usa o Amazon EC2, o Amazon SQS, o Amazon S3 e o Amazon DynamoDB de forma conjunta:

  1. Os usuários finais enviam ao site vídeos para serem transcodificados.
  2. Os vídeos são armazenados no Amazon S3 e uma mensagem de solicitação é inserida em uma fila de entrada do Amazon SQS com um indicador para o vídeo e para o formato de vídeo de destino dentro da mensagem.
  3. O mecanismo de transcodificação executado em um conjunto de instâncias do Amazon EC2 lê a mensagem de solicitação da fila de entrada, recupera o vídeo do Amazon S3 usando o indicador e transcodifica o vídeo para o formato de destino.
  4. O vídeo convertido é inserido de volta no Amazon S3 e outra mensagem de resposta é colocada em outra fila de saída do Amazon SQS com um indicador para o vídeo convertido.
  5. Ao mesmo tempo, metadados sobre o vídeo (formato, data de criação, tamanho, etc.) são indexados no Amazon DynamoDB para consulta.

Durante esse fluxo de trabalho, uma instância dedicada do Auto Scaling poderá monitorar constantemente a fila de entrada. Com base no número de mensagens na fila de entrada, a instância do Auto Scaling ajusta de modo dinâmico o número de instâncias do Amazon EC2 de transcodificação para atender aos requisitos de tempo de resposta dos clientes do site.

P: Como faço para interagir com o Amazon SQS?

Você pode acessar o Amazon SQS utilizando o Console de gerenciamento da AWS, que ajuda você a criar filas do Amazon SQS e enviar mensagens de modo fácil.

O Amazon SQS também oferece uma API de web services. Também está integrado aos AWS SDKs, o que permite você trabalhar na linguagem de programação de sua preferência.

P: Quais são as operações disponíveis para filas de mensagens?

Para obter informações sobre operações de fila de mensagens, consulte Amazon SQS Product Details.

P: Quem pode realizar operações em uma fila de mensagens?

Apenas um proprietário de conta da AWS (ou uma conta da AWS para a qual o proprietário da conta delegou direitos) pode executar operações em uma fila de mensagens do Amazon SQS.

P: Posso usar o Java Message Service (JMS) com o Amazon SQS?

Sim. Você pode se beneficiar com a escala, o baixo custo e a alta disponibilidade do Amazon SQS sem a preocupação e a alta sobrecarga de ter de executar seu próprio cluster JMS.

A Amazon disponibiliza uma Amazon SQS Java Messaging Library que implementa a especificação JMS 1.1 e usa o Amazon SQS como o provedor do JMS. Para obter mais informações, consulte Usar o JMS com Amazon SQS no Guia do desenvolvedor do Amazon SQS.

No momento, as filas FIFO não são compatíveis com o cliente JMS.

P: Como o Amazon SQS identifica mensagens?

Todas as mensagens têm um ID exclusivo global que o Amazon SQS retorna quando a mensagem é entregue à fila de mensagens. O ID não é exigido para executar nenhuma ação subsequente relacionada à mensagem, mas é útil para rastrear o recebimento de uma mensagem específica na fila de mensagens.

Ao receber uma mensagem da fila de mensagens, a resposta incluirá um receipt handle que você deve disponibilizar ao excluir a mensagem.

P: Como o Amazon SQS trabalha com mensagens processadas sem sucesso?

No Amazon SQS, é possível usar a API ou o console para configurar dead letter queues, ou seja, filas que recebem mensagens de outras filas de origem.

Se você criar uma fila em uma dead letter queue, ela receberá mensagens após um número máximo de tentativas de processamento sem sucesso. Você pode usar dead letter queues para isolar mensagens que não podem ser processadas para análise posterior.

Para obter mais informações, consulte "É possível utilizar a dead letter queue com filas FIFO?" nesta página e Uso de dead letter queues do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: O que é um visibility timeout?

O visibility timeout é um período em que o Amazon SQS impede que outros componentes de utilização recebam e processem uma mensagem. Para obter mais informações, consulte Visibility Timeout no Guia do desenvolvedor do Amazon SQS.

P: Como o Amazon SQS permite que vários leitores acessem a mesma fila de mensagens sem que as mensagens sejam perdidas ou sem processá-las várias vezes?

Cada fila do Amazon SQS tem um visibility timeout configurável. Durante um período estabelecido, a mensagem não ficará visível para nenhum outro leitor quando ela for lida por meio de uma fila de mensagens. Contanto que a quantidade de tempo necessária para processar a mensagem seja menor do que o visibility timeout, todas as mensagens serão processadas e excluídas.

Se o componente de processamento da mensagem falhar ou ficar indisponível, a mensagem se tornará visível novamente para qualquer componente que leia a fila de mensagens assim que terminar o visibility timeout. Isso permite que vários componentes leiam mensagens por meio da mesma fila de mensagens, cada um trabalhando para processar mensagens diferentes.

P: Qual é o limite máximo de visibilidade de mensagens?

O visibility timeout máximo para uma mensagem do Amazon SQS é de 12 horas.

P: O Amazon SQS é compatível com metadados de mensagem?

Sim. Uma mensagem do Amazon SQS pode conter até 10 atributos de metadados. Você pode usar atributos de mensagem para separar o corpo de uma mensagem dos metadados que a descrevem. Isso ajuda a processar e armazenar informações com maior velocidade e eficácia, pois os aplicativos não precisam inspecionar uma mensagem inteira antes de entender como processá-la.

Os atributos de mensagem do Amazon SQS assumem a forma de trios nome-tipo-valor. Os tipos compatíveis incluem string, binário e número (inclusive inteiro, ponto de flutuação e duplo). Para obter mais informações, consulte Uso dos atributos de mensagens do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: Como posso determinar o valor time-in-queue?

Para determinar o valor time-in-queue, você pode solicitar o atributo SentTimestamp quando receber uma mensagem. A subtração desse valor dos resultados de tempo atuais resultam no valor time-in-queue.

P: Qual é a latência típica do Amazon SQS?

Latências típicas para solicitações de API SendMessage, ReceiveMessage e DeleteMessage situam-se na casa das dezenas ou centenas de milissegundos.

P: Para obter acesso anônimo, qual é o valor do atributo SenderId de uma mensagem?

Quando o ID da conta da AWS não estiver disponível (por exemplo, quando um usuário anômino enviar uma mensagem), o Amazon SQS disponibilizará o endereço IP.

P: O que é a sondagem longa do Amazon SQS?

A sondagem longa do Amazon SQS é uma forma de recuperar mensagens de suas filas do Amazon SQS. Embora a sondagem curta tradicional tenha retorno imediato, mesmo se a fila de mensagens sendo sondada estiver vazia, a sondagem longa não retorna uma resposta até que uma mensagem chegue na fila de mensagens ou a sondagem longa atinja seu limite de tempo.

A sondagem longa diminui o custo da recuperação de mensagens da sua fila do Amazon SQS assim que as mensagens estiverem disponíveis. O uso da sondagem longa pode reduzir o custo de utilização do SQS, pois é possível reduzir o número de recebimentos vazios. Para obter mais informações, consulte Sondagem longa do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: Existe uma cobrança adicional por usar a sondagem longa do Amazon SQS?

Não. As chamadas ReceiveMessage de sondagem longa são faturadas da mesma forma que as chamadas ReceiveMessage de sondagem curta.

P: Quando devo usar a sondagem longa do Amazon SQS e quando devo usar a sondagem curta do Amazon SQS?

Na maioria dos casos, a sondagem longa do Amazon SQS é preferível à sondagem curta. As solicitações de sondagem longa permitem que os consumidores da sua fila recebam mensagens assim que elas chegarem na fila. Ao mesmo tempo, elas reduzem o número de instâncias ReceiveMessageResponse vazias retornadas.

A sondagem longa do Amazon SQS resulta em desempenho superior, a um custo reduzido, para a maioria dos casos de uso. No entanto, se o aplicativo esperar uma resposta imediata de uma chamada ReceiveMessage, é possível que você não consiga utilizar a sondagem longa sem fazer algumas modificações nele.

Por exemplo, se a sua aplicação usar um thread único para sondar várias filas, a alternância de sondagem curta para sondagem longa provavelmente não funcionará, pois o thread único esperará pelo limite de tempo da sondagem longa em qualquer fila vazia, adiando o processamento de todas as filas que possam conter mensagens.

Em uma aplicação como essa, é uma boa prática usar um thread único para processar apenas uma fila, permitindo que a aplicação aproveite os benefícios que a sondagem longa do Amazon SQS proporciona.

P: Qual valor devo usar para meu limite de tempo de sondagem longa?

Em geral, você deve usar uma máximo de 20 segundos para um limite de tempo de sondagem longa. Como valores de limite de tempo de sondagem longa reduzem o número de instâncias ReceiveMessageResponse vazias retornadas, tente definir seu limite de tempo de sondagem longa com o valor mais alto possível.

Se o máximo de 20 segundos não funcionar para a sua aplicação (veja o exemplo na pergunta anterior), defina um limite de tempo de sondagem mais curto, que pode chegar a até 1 segundo.

Todos os AWS SDKs trabalham com o padrão de 20 segundos para sondagens longas. Se você não usa um AWS SDK para acessar o Amazon SQS, ou se você configurou seu AWS SDK para que ele tenha um tempo limite especificamente mais curto, será necessário modificar o cliente do Amazon SQS para permitir solicitações mais longas ou usar um limite de tempo de sondagem longa mais curto.

P: O que é AmazonSQSBufferedAsyncClient para Java?

O AmazonSQSBufferedAsyncClient para Java disponibiliza uma implementação da interface AmazonSQSAsyncClient e adiciona vários recursos importantes:

  • O envio em lote automático de várias solicitações SendMessage, DeleteMessage ou ChangeMessageVisibility sem a necessidade de fazer nenhuma alteração na aplicação
  • A pré-análise de mensagens em um buffer local que permite que a sua aplicação processe imediatamente mensagens por meio do Amazon SQS sem esperar que as mensagens sejam recuperadas

Trabalhando em conjunto, o envio em lote e a pré-análise aumentam o throughput e reduzem a latência da sua aplicação enquanto diminuem seus custos ao fazer menos solicitações ao Amazon SQS. Para obter mais informações, consulte Armazenamento em buffer do cliente e envio em lote de solicitações no Guia do desenvolvedor do Amazon SQS.

No momento, o Cliente assíncrono de armazenamento em buffer do Amazon SQS não é compatível com filas FIFO.

P: Onde posso fazer o download do AmazonSQSBufferedAsyncClient para Java?

Você pode fazer o download do AmazonSQSBufferedAsyncClient como parte do AWS SDK para Java.

P: Preciso reescrever minha aplicação para usar o AmazonSQSBufferedAsyncClient para Java?

Não. O AmazonSQSBufferedAsyncClient para Java foi implementado como uma substituição imediata do AmazonSQSAsyncClient atual.

Se você atualizar a aplicação para usar o AWS SDK mais recente e alterar o cliente para usar o AmazonSQSBufferedAsyncClient para Java em vez do AmazonSQSAsyncClient, a aplicação receberá os benefícios agregados de envio em lote automático e pré-análise.

P: Como posso inscrever filas de mensagens do Amazon SQS para receber notificações dos tópicos do Amazon SNS?

  1. No console do Amazon SQS, selecione uma fila padrão do Amazon SQS.
  2. Na opção Queue Actions, selecione Subscribe Queue to SNS Topic na lista suspensa.
  3. Na caixa de diálogo, selecione o tópico na lista suspensa Choose a Topic e clique em Subscribe.

Para obter mais informações, consulte Inscrever uma fila em um tópico do Amazon SNS no Guia do desenvolvedor do Amazon SQS.

P: Como posso realizar a distribuição de mensagens idênticas em várias filas do Amazon SQS?

  1. Use o Amazon SNS para criar um tópico.
  2. Crie e inscreva várias filas padrão do Amazon SQS no tópico do Amazon SNS.
  3. Sempre que uma mensagem for enviada para o tópico do Amazon SNS, ela será distribuída para as filas de mensagens do Amazon SQS.

O Amazon SNS entrega a mensagem para todas as filas de mensagens do Amazon SQS inscritas no tópico.

P: O Amazon SNS oferece a entrega de mensagens para filas do Amazon SQS pelo menos uma vez?

O Amazon SNS foi criado para que cada mensagem seja entregue pelo menos uma vez às filas padrão do Amazon SQS.

P: Posso excluir todas as mensagens de uma fila de mensagens sem excluir a fila de mensagens em si?

Sim. Sim, você pode excluir todas as mensagens de uma fila de mensagens do Amazon SQS usando a ação PurgeQueue.

Quando você limpar uma fila de mensagens, todas as mensagens enviadas anteriormente para ela serão excluídas. Como a sua fila de mensagens e seus atributos permanecem, não é necessário reconfigurar a fila de mensagens. Você poderá continuar a utilizá-la.

Para excluir apenas mensagens específicas, use as ações DeleteMessage ou DeleteMessageBatch.


P: Qual o nível de confiabilidade do armazenamento dos meus dados no Amazon SQS?

O Amazon SQS armazena todas as filas de mensagens e as mensagens em uma única região altamente disponível da AWS com várias zonas de disponibilidade (AZs) redundantes para que nenhuma falha única de computador, rede ou AZ possa tornar as mensagens inacessíveis. Para obter mais informações, consulte Regiões e zonas de disponibilidade no Guia do usuário do Amazon Relational Database Service.

P: Como posso proteger as mensagens nas minhas filas de mensagens?

Mecanismos de autenticação garantem que as mensagens armazenadas nas filas de mensagens do Amazon SQS estejam protegidas contra acesso não autorizado. Você pode controlar quem envia mensagens para uma fila de mensagens e quem as recebe de uma fila de mensagens. Para obter maior segurança, você pode criar sua aplicação para criptografar mensagens antes que elas sejam inseridas em uma fila de mensagens.

O Amazon SQS tem seu próprio sistema de permissões baseado em recursos que usa políticas escritas na mesma linguagem das políticas do AWS Identity and Access Management (IAM): por exemplo, você pode usar variáveis, como políticas do IAM. Para obter mais informações, consulte Exemplos de política do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

O Amazon SQS é compatível com os protocolos HTTP over SSL (HTTPS) e Transport Layer Security (TLS). A maioria dos clientes pode negociar automaticamente o uso de versões mais recentes do TLS sem nenhuma mudança de código ou configuração. O Amazon SQS é compatível com as versões 1.0, 1.1 e 1.2 do protocolo Transport Layer Security (TLS) em todas as regiões.

P: Por que existem operações ReceiveMessage e DeleteMessage separadas?

Quando o Amazon SQS retorna uma mensagem para você, essa mensagem permanece na fila de mensagens, mesmo que você não tenha realmente recebido a mensagem. Você é responsável por excluir a mensagem. A solicitação de exclusão confirma que você já acabou de processá-la.

Se você não excluir a mensagem, o Amazon SQS vai entregá-la novamente quando receber outra solicitação de recebimento. Para obter mais informações, consulte Visibility Timeout no Guia do desenvolvedor do Amazon SQS.

P: Uma mensagem excluída pode ser recebida novamente?

Não. As filas FIFO nunca introduzem mensagens repetidas.

Em raras ocasiões, você poderá receber pela segunda vez uma mensagem excluída previamente nas filas padrão. Isso pode ocorrer na rara situação em que uma operação DeleteMessage não exclua todas as cópias de uma mensagem porque um dos servidores do sistema distribuído do Amazon SQS não está disponível no momento da exclusão. Essa cópia da mensagem pode ser entregue novamente. Se você usar filas padrão, projete o aplicativo para que seja idempotente (ou seja, se você receber uma mensagem pela segunda vez, não ocorrerão erros ou incompatibilidades).

P: O que acontece se eu emitir uma solicitação DeleteMessage em uma mensagem excluída anteriormente?

Ao emitir uma solicitação DeleteMessage em uma mensagem excluída anteriormente, o Amazon SQS retornará uma resposta de êxito.


P: O Amazon SQS tem certificação PCI DSS?

Sim. O Amazon SQS tem certificação PCI DSS de nível 1. Para obter mais informações, consulte PCI Compliance.

P: O Amazon SQS está em conformidade com o HIPAA?

Não. O Amazon SQS não está qualificado para obter a conformidade com o HIPAA.

No entanto, você pode usar a Extended Client Library para enviar cargas por meio do Amazon S3 (o Amazon S3 é um serviço qualificado para o HIPAA). Você pode obter a conformidade com o HIPAA dessa maneira, pois nenhuma informação de identificação pessoal (PII) será transferida por meio do Amazon SQS.

Para obter mais informações, consulte Using the Amazon SQS Extended Client Library for Java no Guia do desenvolvedor do Amazon SQS


P: Por quanto tempo posso manter minhas mensagens na filas de mensagens do Amazon SQS?

A retenção de mensagens mais longa disponibiliza maior flexibilidade para permitir intervalos mais longos entre a utilização e a produção de mensagens.

Você pode configurar o período de retenção do Amazon SQS com um valor entre 1 minuto e 14 dias. O padrão são 4 dias. Quando o limite de retenção de mensagens for atingido, suas mensagens serão excluídas automaticamente.

P: Como configuro o Amazon SQS para que seja possível reter mensagens por mais tempo?

Para configurar o período de retenção de mensagens, defina o atributo MessageRetentionPeriod usando o console ou o método Distributiveness. Use esse atributo para especificar o número de segundos em que uma mensagem será retida no Amazon SQS.

Você pode usar o atributo MessageRetentionPeriod para definir o período de retenção de mensagens entre 60 segundos (1 minuto) e 1.209.600 segundos (14 dias). Para obter mais informações sobre como trabalhar com esse atributo de mensagem, consulte Amazon SQS API Reference.

P: Como configurar o tamanho máximo de mensagens para o Amazon SQS?

Para configurar o tamanho máximo de mensagens, use o console ou o método SetQueueAttributes para definir o atributo MaximumMessageSize. Esse atributo especifica o limite de bytes que uma mensagem do Amazon SQS pode conter. Defina esse limite com um valor entre 1.024 bytes (1 KB) e 262.144 bytes (256 KB). Para obter mais informações, consulte Uso dos atributos de mensagens do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

Para enviar mensagens maiores que 256 KB, use a Amazon SQS Extended Client Library para Java. Essa biblioteca permite que você envie uma mensagem do Amazon SQS contendo uma referência a uma carga de mensagem no Amazon S3 que pode chegar a até 2 GB. Para filas FIFO, consulte "As filas FIFO do Amazon SQS são compatíveis com o Cliente assíncrono de armazenamento em buffer do Amazon SQS, a Biblioteca de clientes estendida do Amazon SQS para Java ou o Cliente do Amazon SQS Java Message Service?"

P: Que tipo de dados posso incluir em uma mensagem?

As mensagens do Amazon SQS podem conter até 256 KB de dados de texto, como XML, JSON e texto não formatado. Os caracteres Unicode seguintes são aceitos:

#x9 | #xA | #xD | [#x20 a #xD7FF] | [#xE000 a #xFFFD] | [#x10000 a #x10FFFF]

Para obter mais informações, consulte XML 1.0 Specification.

P: A que tamanho podem chegar as filas de mensagens do Amazon SQS?

Uma única fila de mensagens do Amazon SQS pode conter um número ilimitado de mensagens. Entretanto, há um limite de 120.000 mensagens em andamento para uma fila padrão e 20.000 para uma fila FIFO. São chamadas de "in-flight" as mensagens que foram recebidas da fila por um componente de utilização, mas que ainda não foram excluídas da fila.

P: Quantas filas de mensagens posso criar?

Você pode criar qualquer número de filas de mensagens.

P: Há um limite de tamanho para o nome das filas de mensagens do Amazon SQS?

Os nomes de fila são limitados a 80 caracteres.

P: Há restrições para os nomes das filas de mensagens do Amazon SQS?

Você pode usar caracteres alfanuméricos, hífens (-) e sublinhados (_).

P: Posso reutilizar um nome de fila de mensagens?

Um nome de fila de mensagens deve ser exclusivo dentro de uma conta e uma região da AWS. Você pode reutilizar um nome de fila de mensagens depois de excluí-la.


P: Como posso compartilhar uma fila de mensagens?

Você pode associar uma instrução de política de acesso (e especificar as permissões concedidas) à fila de mensagens a ser compartilhada. O Amazon SQS disponibiliza APIs para a criação e o gerenciamento de instruções de política de acesso:

  • AddPermission
  • RemovePermission
  • SetQueueAttributes
  • GetQueueAttributes

Para obter mais informações, consulte Amazon SQS API Reference.

P: Quem paga pelo acesso compartilhado a filas?

O proprietário da fila de mensagens paga pelo acesso compartilhado da fila de mensagens.

P: Como posso identificar outro usuário da AWS com quem desejo compartilhar uma fila de mensagens?

A API do Amazon SQS utiliza o número de conta da AWS para identificar usuários da AWS.

P: O que preciso disponibilizar para um usuário da AWS com quem desejo compartilhar uma fila de mensagens?

Para compartilhar uma fila de mensagens com um usuário da AWS, disponibilize o URL completo da fila de mensagens que você deseja compartilhar. As operações CreateQueue e ListQueues retornam este URL em suas respostas.

P: O Amazon SQS é compatível com o acesso anônimo?

Sim. Você pode configurar uma política de acesso que permita que usuários anônimos acessem uma fila de mensagens.

P: Quando devo usar a API permissions?

A API permissions disponibiliza uma interface para compartilhar o acesso a uma fila de mensagens para desenvolvedores. No entanto, essa API não pode permitir acesso condicional ou casos de uso mais avançados.

P: Quando devo usar a operação SetQueueAttributes com objetos JSON?

A operação SetQueueAttributes é compatível com a linguagem de políticas de acesso total. Por exemplo, você pode usar a linguagem da política para restringir o acesso a uma fila de mensagens por endereço IP e horário do dia. Para obter mais informações, consulte Exemplos de política do Amazon SQS no Guia do desenvolvedor do Amazon SQS.


P: Em que regiões o Amazon SQS está disponível?

Para saber sobre a disponibilidade de serviços de uma região, consulte AWS Global Infrastructure Region Table. No momento, as filas FIFO estão disponíveis nas regiões Leste dos EUA (Ohio) e Oeste dos EUA (Oregon).

P: Posso compartilhar mensagens entre filas em regiões diferentes?

Não. Cada fila de mensagens do Amazon SQS é independente dentro de cada região.

P: Há alguma diferença na definição de preço entre as regiões?

A definição de preço do Amazon SQS é a mesma para todas as regiões, exceto para a região China (Pequim). Para obter mais informações, consulte Amazon SQS Pricing.

P: Qual é a estrutura de definição de preço entre várias regiões?

Você pode transferir dados entre o Amazon SQS e o Amazon EC2 ou o AWS Lambda gratuitamente dentro de uma única região.

Ao transferir dados entre o Amazon SQS e o Amazon EC2 ou o AWS Lambda em regiões diferentes, será cobrada a taxa de transferência de dados normal. Para obter mais informações, consulte Amazon SQS Pricing.