Uma assinatura é um conjunto de regras de filtro e configurações de status que um grupo de consumidores utiliza para receber e processar mensagens no ApsaraMQ for RocketMQ.
Os grupos de consumidores registram assinaturas dinamicamente no servidor. Durante a entrega de mensagens, o servidor compara as mensagens com as regras de filtro da assinatura e rastreia o progresso do consumo.
Uma assinatura controla:
Escopo das mensagens: defina quais mensagens dentro de um tópico são entregues ao grupo de consumidores.
Progresso do consumo: representa o registro no servidor sobre quais mensagens já foram consumidas. O ApsaraMQ for RocketMQ persiste o progresso do consumo por padrão. Se um consumidor ficar offline e se reconectar, ele retomará o processamento do ponto em que parou.
Relações entre tópicos e grupos de consumidores
Um tópico, vários grupos de consumidores
O ApsaraMQ for RocketMQ oferece suporte a assinaturas de um para muitos. Vários grupos de consumidores podem assinar o mesmo tópico de forma independente, e cada grupo pode consumir todas as mensagens ou apenas um subconjunto delas.

Um grupo de consumidores, vários tópicos
Um único grupo de consumidores pode assinar vários tópicos. Cada assinatura de tópico é independente e pode ter suas próprias regras de filtro.
Por exemplo, o grupo de consumidores Grupo A assina tanto o Tópico A quanto o Tópico B. As duas assinaturas são separadas — alterar uma não afeta a outra.

Modos de consumo
O modo de consumo determina como as mensagens são distribuídas para os consumidores dentro de um grupo.
|
Modo |
Aplica-se a |
Comportamento |
|
|
Tópicos padrão (não Lite) |
Cada mensagem é entregue a um consumidor no grupo com base no balanceamento de carga. |
|
|
Apenas tópicos Lite |
Cada consumidor no grupo pode assinar um conjunto diferente de tópicos Lite. |
Filtragem de mensagens
A filtragem de mensagens está disponível no modo CLUSTERING. Utilize regras de filtro para restringir as mensagens entregues a um grupo de consumidores, indo além das assinaturas no nível do tópico.
Tipos de filtro
|
Tipo |
Descrição |
|
Filtragem por TAG |
Corresponde a mensagens com base no texto completo das strings de tag. |
|
Filtragem SQL92 |
Corresponde a atributos de mensagem com base em expressões SQL92. |
Expressões de filtro
As expressões de filtro definem os critérios de correspondência para cada tipo de filtro. Para detalhes sobre a sintaxe, consulte Sintaxe de expressão de filtro.
Restrições de assinatura por modo
Modo CLUSTERING: mantenha as assinaturas consistentes em todo o grupo
No modo CLUSTERING, todos os consumidores no mesmo grupo de consumidores devem usar relações de assinatura e lógica de consumo idênticas. Assinaturas incompatíveis causam conflitos de consumo, o que pode levar a um consumo anormal de algumas mensagens.
Correto — ambos os consumidores assinam o mesmo tópico com a mesma tag:
// Consumer c1
Consumer c1 = ConsumerBuilder.build(groupA);
c1.subscribe(topicA,"TagA");
// Consumer c2
Consumer c2 = ConsumerBuilder.build(groupA);
c2.subscribe(topicA,"TagA");
Incorreto — consumidores no mesmo grupo assinam o mesmo tópico com tags diferentes:
// Consumer c1
Consumer c1 = ConsumerBuilder.build(groupA);
c1.subscribe(topicA,"TagA");
// Consumer c2
Consumer c2 = ConsumerBuilder.build(groupA);
c2.subscribe(topicA,"TagB");
Modo LITE_SELECTIVE: assinaturas flexíveis por consumidor
No modo LITE_SELECTIVE, os consumidores dentro do mesmo grupo podem assinar conjuntos diferentes de tópicos Lite. Por exemplo, o Consumidor 1 assina LiteTopic1 e LiteTopic2, enquanto o Consumidor 2 assina LiteTopic3 e LiteTopic4.
É possível adicionar ou remover tópicos Lite do conjunto de assinaturas de cada consumidor em tempo real.
