O Simple Message Queue (SMQ, anteriormente MNS) é um serviço de mensagens distribuídas que transfere dados e notificações entre componentes de aplicações. Ele desacopla produtores de consumidores para que cada componente escale, implante e falhe independentemente.
O SMQ oferece dois modelos de mensagens:
Modelo de fila: mensagens ponto a ponto em que um único consumidor processa cada mensagem.
Modelo de tópico: mensagens no padrão publicar-assinar, nas quais uma única mensagem é entregue a vários assinantes.
Benefícios
|
Benefício |
Descrição |
|
Escalabilidade |
Processa requisições simultâneas de múltiplos produtores e consumidores. Ajuste as configurações de concorrência para adequar-se à sua carga de trabalho. |
|
Confiabilidade |
Garante a entrega de cada mensagem da fila pelo menos uma vez durante seu período de validade. Tenta entregar novamente mensagens de tópico automaticamente conforme políticas de repetição configuráveis. |
|
Segurança |
Utiliza o sistema de contas da Alibaba Cloud para isolar recursos e assegurar que apenas entidades autorizadas acessem as mensagens. |
|
Alta disponibilidade |
Mantém a infraestrutura de mensagens disponível continuamente. |
Casos de uso
Desacople microsserviços. Direcione a comunicação entre serviços por meio de filas em vez de chamadas diretas. Cada serviço consome mensagens no próprio ritmo, evitando que a lentidão em um componente bloqueie os demais.
Distribua notificações (fan-out). Publique um único evento em um tópico para alcançar vários sistemas downstream simultaneamente. Por exemplo, um evento de pedido realizado pode ser distribuído ao mesmo tempo para uma fila de atendimento, uma fila de data warehouse e um endpoint de notificação HTTP.
Nivele a carga. Armazene requisições recebidas em uma fila durante picos de tráfego. Os consumidores processam o acúmulo de forma constante e protegem os serviços de backend contra sobrecarga.
Processe assincronamente. Transfira tarefas demoradas — como processamento de imagens, geração de relatórios e transformação de dados — para workers em segundo plano por meio de uma fila.
Métodos de acesso
O SMQ suporta acesso pela Internet e por meio de uma Virtual Private Cloud (VPC). Em uma VPC, configure o bloco CIDR, a tabela de rotas e o gateway para acessar o SMQ juntamente com outros serviços da Alibaba Cloud, como Elastic Compute Service (ECS), ApsaraDB RDS e Server Load Balancer (SLB).
Modelo de fila
No modelo de fila, os produtores enviam mensagens para uma fila e os consumidores as retiram. Como cada mensagem pode ser consumida por apenas um consumidor, esse modelo é ideal para distribuição de tarefas e processamento de cargas de trabalho.
Funcionamento
Um produtor envia uma mensagem para a fila.
Um consumidor retira a mensagem. Após a retirada, a mensagem entra em um período de invisibilidade e torna-se oculta para outros consumidores durante uma duração configurável.
Após o processamento, o consumidor exclua a mensagem da fila.
Caso o consumidor não exclua a mensagem antes do término do período de invisibilidade, ela volta a ficar disponível para que outro consumidor possa retirá-la.
Fluxo de mensagens baseado em fila 
Tipos de fila
|
Tipo |
Descrição |
|
Fila padrão |
Tipo de fila padrão para mensagens de uso geral. |
|
Fila com atraso |
As mensagens ficam disponíveis para consumo somente após um atraso especificado. |
Personalize parâmetros da fila, como tempo limite de visibilidade, período de retenção de mensagens e tamanho máximo da mensagem, para adequá-los à sua carga de trabalho.
Garantia de entrega
Toda mensagem em uma fila é entregue pelo menos uma vez durante seu período de validade. O SMQ integra-se ao sistema de contas da Alibaba Cloud para isolar recursos entre usuários e garantir que apenas entidades autorizadas acessem as mensagens.
Modelo de tópico
No modelo de tópico, um publicador envia uma mensagem para um tópico e o SMQ a encaminha para todas as assinaturas ativas. Cada assinatura roteia as mensagens para um endpoint especificado, como uma fila. Esse modelo um-para-muitos é adequado para transmissão de eventos e padrões de distribuição (fan-out).
Funcionamento
Um publicador envia uma mensagem para um tópico.
O SMQ avalia cada assinatura associada ao tópico.
Se uma assinatura possuir uma tag de filtro, apenas as mensagens com a mesma tag serão entregues. Assinaturas sem tag de filtro recebem todas as mensagens.
O SMQ envia a mensagem para o endpoint definido em cada assinatura correspondente.
Fluxo de mensagens baseado em tópico 
Filtragem de mensagens
As assinaturas suportam filtragem baseada em tags. Atribua uma tag a uma assinatura para receber apenas mensagens que possuam a mesma tag. Isso reduz o processamento desnecessário e permite que vários assinantes compartilhem um único tópico enquanto lidam com diferentes tipos de mensagens.
Sem tag na assinatura: Todas as mensagens publicadas no tópico são entregues, independentemente de possuírem tags.
Com tag na assinatura: Apenas mensagens com uma tag correspondente são entregues.
Para mais detalhes, consulte Operações de API RESTful sobre tópicos.
Entrega de mensagens
O SMQ envia mensagens para os endpoints especificados nas assinaturas. Se uma URL de callback estiver indisponível, direcione as mensagens para uma fila do SMQ e recupere-as usando o modelo de fila. Para instruções de configuração, consulte Enviar mensagens para uma fila e Enviar mensagens de um cliente produtor para vários clientes consumidores.
Durante o período de validade, o SMQ envia mensagens automaticamente conforme a política de nova tentativa configurada (NotifyStrategy). Isso garante a atomicidade da publicação de mensagens.
Formatos de mensagem
|
Formato |
Conteúdo |
|
XML |
Corpo e atributos da mensagem em XML. |
|
JSON |
Corpo e atributos da mensagem em JSON. |
|
SIMPLIFIED |
Apenas o corpo da mensagem, sem atributos (texto simples). |
Para mais detalhes, consulte NotifyContentFormat.
Monitoramento e logs
Gerenciamento de logs
Acompanhe todo o ciclo de vida de cada mensagem, incluindo eventos de envio, recebimento e exclusão. Para mensagens de tópico, os logs também registram tentativas de envio e resultados de entrega.
Utilize o gerenciamento de logs para solucionar falhas de entrega, auditar o processamento de mensagens e verifique o fluxo de mensagens de ponta a ponta. Para mais detalhes, consulte Gerenciamento de logs.
Integração com CloudMonitor
Monitore métricas de fila e configure regras de alerta personalizadas no console do CloudMonitor. O CloudMonitor notifica você quando ocorrem anomalias, como falhas na entrega de mensagens. Para mais detalhes, consulte Cloud Monitor.