Una suscripción es un conjunto de reglas de filtrado y configuraciones de estado que utiliza un grupo de consumidores para recibir y procesar mensajes en ApsaraMQ for RocketMQ.
Los grupos de consumidores registran dinámicamente las suscripciones en el servidor. Durante la entrega de mensajes, el servidor compara los mensajes con las reglas de filtrado de la suscripción y rastrea el progreso del consumo.
Una suscripción controla:
Alcance de los mensajes: qué mensajes dentro de un tema se entregan al grupo de consumidores.
Progreso del consumo: registro del lado del servidor sobre qué mensajes se han consumido. ApsaraMQ for RocketMQ conserva el progreso del consumo de forma predeterminada. Si un consumidor se desconecta y vuelve a conectarse, reanuda el proceso desde donde lo dejó.
Relaciones entre temas y grupos de consumidores
Un tema, varios grupos de consumidores
ApsaraMQ for RocketMQ admite suscripciones de uno a muchos. Varios grupos de consumidores pueden suscribirse de manera independiente al mismo tema, y cada grupo puede consumir todos los mensajes o solo un subconjunto de ellos.

Un grupo de consumidores, varios temas
Un solo grupo de consumidores puede suscribirse a varios temas. Cada suscripción a un tema es independiente y puede tener sus propias reglas de filtrado.
Por ejemplo, el grupo de consumidores Grupo A se suscribe tanto al Tema A como al Tema B. Las dos suscripciones son independientes; modificar una no afecta a la otra.

Modos de consumo
El modo de consumo determina cómo se distribuyen los mensajes a los consumidores dentro de un grupo.
|
Modo |
Aplica a |
Comportamiento |
|
|
Temas estándar (no Lite) |
Cada mensaje se entrega a un consumidor del grupo según el balanceo de carga. |
|
|
Solo temas Lite |
Cada consumidor del grupo puede suscribirse a un conjunto diferente de temas Lite. |
Filtrado de mensajes
El filtrado de mensajes está disponible en el modo CLUSTERING. Utilice reglas de filtrado para limitar los mensajes entregados a un grupo de consumidores además de las suscripciones por tema.
Tipos de filtro
|
Tipo |
Descripción |
|
Filtrado por TAG |
Coincide con los mensajes según el texto completo de las cadenas de etiquetas. |
|
Filtrado SQL92 |
Coincide con los atributos del mensaje según expresiones SQL92. |
Expresiones de filtro
Las expresiones de filtro definen los criterios de coincidencia para cada tipo de filtro. Para obtener detalles sobre la sintaxis, consulte Filter expression syntax.
Restricciones de suscripción por modo
Modo CLUSTERING: mantenga la consistencia de las suscripciones en todo el grupo
En el modo CLUSTERING, todos los consumidores del mismo grupo deben utilizar relaciones de suscripción y lógica de consumo idénticas. Las suscripciones no coincidentes provocan conflictos de consumo, lo que puede derivar en un comportamiento anómalo para algunos mensajes.
Correcto: ambos consumidores se suscriben al mismo tema con la misma etiqueta:
// Consumer c1
Consumer c1 = ConsumerBuilder.build(groupA);
c1.subscribe(topicA,"TagA");
// Consumer c2
Consumer c2 = ConsumerBuilder.build(groupA);
c2.subscribe(topicA,"TagA");
Incorrecto: los consumidores del mismo grupo se suscriben al mismo tema con etiquetas 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: suscripciones flexibles por consumidor
En el modo LITE_SELECTIVE, los consumidores dentro del mismo grupo pueden suscribirse a conjuntos diferentes de temas Lite. Por ejemplo, el Consumidor 1 se suscribe a LiteTopic1 y LiteTopic2, mientras que el Consumidor 2 se suscribe a LiteTopic3 y LiteTopic4.
Es posible agregar o quitar temas Lite del conjunto de suscripciones de cada consumidor en tiempo real.
