Visão Geral do Serviço Queue

O OCI (Oracle Cloud Infrastructure) Queue é um serviço totalmente gerenciado sem servidor que ajuda a desacoplar sistemas e ativar operações assíncronas. O serviço Queue trata dados transacionais de alto volume que exigem mensagens processadas de forma independente sem perda ou duplicação. O serviço Queue suporta dimensionamento transparente e automático com base no throughput para produtores e consumidores. O serviço Queue usa padrões abertos para oferecer suporte à comunicação com qualquer cliente ou produtor com o mínimo de esforço.

O serviço OCI Queue é criado com base em quatro princípios:

Publicando
As mensagens podem ser publicadas em uma fila por um ou mais produtores, cada um com um período de retenção. Se a retenção não for especificada, a mensagem vai expirar usando um período de retenção definido no nível da fila. Uma mensagem contém um payload na forma de string.
Consumindo
Vários consumidores podem consumir mensagens de uma única fila. A contagem de consumidores pode ser escalada em conjunto com a taxa de mensagens que estão sendo publicadas. Depois que uma mensagem é entregue a um consumidor, ela fica oculta de outros consumidores por um período predefinido, conhecido como timeout de visibilidade.
Atualizando
Se o processamento de uma mensagem demorar mais do que o esperado, os consumidores poderão estender o timeout de visibilidade de uma mensagem. A extensão do timeout de visibilidade impede que a mensagem seja retornada à fila e entregue a outro consumidor.
Excluindo
Depois que uma mensagem tiver sido entregue e processada por um consumidor, ela deverá ser excluída para impedir a reentrega a outro consumidor.

Benefícios

O serviço Queue oferece os benefícios a seguir.

Desacoplamento de Aplicativos

O serviço Queue ajuda a desacoplar aplicativos e sistemas usando a arquitetura orientada por eventos. O desacoplamento garante que os componentes individuais do aplicativo possam ser dimensionados de forma independente e que, à medida que novos componentes do aplicativo forem criados, eles possam publicar na fila ou assiná-la.

Um diagrama que representa um produtor que está enviando mensagens para várias filas consumidas por um consumidor.

Processamento Confiável de Mensagens

O serviço Queue garante que uma mensagem nunca será perdida, mesmo que o consumidor não esteja disponível para consumo. Uma mensagem publicada é persistente até ser excluída ou expirada.

Se uma mensagem não for consumida com sucesso, ela será enviada para uma fila de mensagens inativas (DLQ). As filas de cartas mortas permitem isolar mensagens problemáticas para determinar por que elas estão falhando. O isolamento e o consumo de mensagens problemáticas dessa forma podem garantir a entrega bem-sucedida a um aplicativo de consumidor pelo menos uma vez. Consulte Filas de Mensagens Não Processadas para obter mais informações.

Padrões Abertos

O serviço Queue pode ser chamado usando a definição de API RESTful (com uma especificação de API Aberta) ou usando o protocolo STOMP padrão do mercado.

Conceitos

O serviço Queue usa os conceitos a seguir.

mensagem
Uma mensagem é um elemento em uma fila que contém um payload na forma de uma string. A string pode estar em qualquer formato, inclusive XML, JSON, CSV, uma mensagem binária Base64-encoded e até mesmo formatos compactados, como gzip. Os produtores e os consumidores devem concordar com o formato da mensagem. Cada mensagem é processada de forma independente.
produtor
Um cliente que envia mensagens para a fila.
consumidor
Um cliente que recebe mensagens de uma fila. O consumidor também é responsável por excluir mensagens da fila após o recebimento das mensagens.
canal
Um destino efêmero em uma fila que pode ser criada sob demanda. As mensagens podem ser publicadas em um canal específico dentro de uma fila, e os consumidores podem recuperar mensagens de canais específicos. Para obter mais informações, consulte Canais.
período máximo de retenção
O tempo que uma fila mantém uma mensagem até que ela seja excluída automaticamente pelo sistema, se não for excluída por um consumidor. O período máximo de retenção pode ser configurado com valores de 10 segundos a 7 dias no nível da fila. O valor padrão é 1 dia.
contagem de entregas
O número de vezes que uma mensagem é entregue a um consumidor mediante solicitação.
máximo de tentativas de entrega
O número de vezes que uma mensagem é entregue a um consumidor, mas não atualizada ou excluída, antes de ser enviada a uma fila de mensagens inativas (DLQ). O máximo de tentativas de entrega é configurável com valores de 1 a 20 no nível da fila. Para obter mais informações, consulte contagem de entregas.
timeout de sondagem
O período durante o qual um consumidor aguardará o consumo das mensagens. O aumento do timeout de sondagem reduz o número de vezes que um consumidor solicita mensagens da fila, mas a resposta indica que não há mensagens disponíveis para consumo. O timeout de sondagem é configurável com valores de 0 a 30 segundos no nível da fila e os consumidores podem definir o valor ao solicitar mensagens. O valor padrão é de 30 segundos. Para obter mais informações, consulte sondagem longa.
timeout de visibilidade
O período durante o qual uma mensagem recebida da fila por um consumidor não é visível para outros consumidores. O timeout de visibilidade pode ser configurado com valores de 1 segundo a 12 horas no nível da fila e os consumidores podem definir o valor ao solicitar mensagens. O valor padrão é de 30 segundos. Para obter mais informações, consulte bloqueio de mensagens.
mensagens visíveis
O número de mensagens que no momento estão em uma fila e disponíveis para consumo.
mensagens em andamento
O número de mensagens entregues a um consumidor, mas ainda não excluídas. As mensagens em andamento ficarão indisponíveis para nova entrega até que o timeout de visibilidade tenha ocorrido.
DLQ (fila de mensagens não processadas)
Se uma mensagem não for consumida com sucesso e houver mais tentativas de entrega do que o número máximo de tentativas configurado, a mensagem será transferida para uma DLQ (fila de mensagens não processadas). Para obter mais informações, consulte Filas de Mensagens Não Processadas.

Garantias

O serviço Queue oferece as garantias descritas a seguir.

  • Uma mensagem publicada com sucesso garantirá que seja durável até que seja excluída ou seu período de retenção tenha decorrido. A publicação de uma mensagem é considerada bem-sucedida quando o serviço Queue envia uma confirmação ao produtor. Não importa se a resposta foi recebida.
  • Uma mensagem dentro do timeout de visibilidade garante que não seja entregue a outro consumidor até a expiração do timeout.
  • Uma mensagem não será excluída pelo serviço Queue antes do término do seu período de retenção. Um consumidor pode processar e excluir uma mensagem durante o período de retenção.

Autenticação e Autorização

Cada serviço do Oracle Cloud Infrastructure integra-se ao serviço IAM para autenticação e autorização em relação a todas as interfaces (a Console, SDK ou CLI e API REST).

Um administrador da sua organização precisa configurar grupos, compartimentos  e políticas  que controlem quais usuários podem acessar quais serviços e quais recursos. e o tipo de acesso que eles têm. Por exemplo, as políticas controlam quem pode criar usuários, grupos e compartimentos ou quem pode criar e gerenciar implantações virtuais.

Maneiras de Acessar o Serviço Queue

Você pode acessar o serviço Queue usando a Console (uma interface baseada em browser), a CLI do Oracle Cloud Infrastructure ou APIs REST.

As instruções para os três métodos estão presentes em todo este guia.

Limites de Serviço

Quando você se cadastra no Oracle Cloud Infrastructure, um conjunto de limites do serviço é configurado para sua tenancy. O limite de serviço é a cota ou a permissão definida em um recurso. Revise os limites de serviço a seguir para recursos do serviço Queue.

Recurso Detalhes
Filas 10 por tenancy por região

Consulte Limites do Serviço para saber mais sobre os limites do serviço e encontrar instruções para solicitar um aumento de limite. Para definir limites específicos de compartimentos em um recurso ou família de recursos, os administradores podem usar cotas de compartimento.

Limites Funcionais

Além dos limites de recursos de serviço, existem limites de fila específicos para recursos e funcionalidades.

Limite Detalhes
Canais por fila 256 por fila
Tamanho máximo da solicitação PutMessage 512 KB e 20 mensagens
Tamanho máximo da resposta GetMessage 2 MB e 20 mensagens
Tamanho máximo da mensagem 256 KB
Número máximo de mensagens em andamento 100.000 por fila
Máximo de mensagens por fila Ilimitado
Retenção de mensagens Máximo: 7 dias

Mínimo: 10 segundos

Padrão: 1 dia

Timeout de visibilidade da mensagem Máximo: 12 horas

Mínimo: 0 segundo no nível da mensagem

Mínimo: 1 segundo no nível da fila

Padrão: 30 segundos

Máximo de solicitações GET simultâneas 1.000 solicitações por segundo por fila
Máximo de operações de mensagens 1.000 solicitações por segundo por API por fila
Taxa máxima de dados Entrada por fila: 10 MB/s

Saída por fila: 10 MB/s

Timeout de sondagem Máximo: 30 segundos

Mínimo: 0 segundo

Throughput do STOMP 10 MB/s por conexão do STOMP
Armazenamento 20 GB por tenancy

2 GB por fila