Un abonnement regroupe les règles de filtrage et les configurations d'état qu'un groupe de consommateurs utilise pour recevoir et traiter les messages dans ApsaraMQ for RocketMQ.
Les groupes de consommateurs enregistrent dynamiquement leurs abonnements sur le serveur. Lors de la distribution, le serveur fait correspondre les messages aux règles de filtrage de l'abonnement et suit la progression de la consommation.
Un abonnement définit :
Portée des messages : les messages d'une rubrique distribués au groupe de consommateurs.
Progression de la consommation : l'enregistrement côté serveur des messages consommés. ApsaraMQ for RocketMQ persiste la progression de la consommation par défaut. Si un consommateur se déconnecte puis se reconnecte, il reprend la consommation là où il s'était arrêté.
Relations entre rubriques et groupes de consommateurs
Une rubrique, plusieurs groupes de consommateurs
ApsaraMQ for RocketMQ prend en charge les abonnements un-à-plusieurs. Plusieurs groupes de consommateurs peuvent s'abonner indépendamment à la même rubrique ; chaque groupe peut consommer tout ou partie des messages.

Un groupe de consommateurs, plusieurs rubriques
Un seul groupe de consommateurs peut s'abonner à plusieurs rubriques. Chaque abonnement à une rubrique est indépendant et possède ses propres règles de filtrage.
Par exemple, le groupe de consommateurs Groupe A s'abonne à la fois à la Rubrique A et à la Rubrique B. Ces deux abonnements sont distincts : modifier l'un n'affecte pas l'autre.

Modes de consommation
Le mode de consommation détermine comment les messages sont distribués aux consommateurs au sein d'un groupe.
| Mode | S'applique à | Comportement |
|---|---|---|
CLUSTERING |
Rubriques standard (non Lite) | Le système distribue chaque message à un seul consommateur du groupe, selon un équilibrage de charge. |
LITE_SELECTIVE |
Rubriques Lite uniquement | Chaque consommateur du groupe peut s'abonner à un ensemble différent de rubriques Lite. |
Filtrage des messages
Le filtrage des messages est disponible en mode CLUSTERING. Utilisez des règles de filtrage pour restreindre les messages distribués à un groupe de consommateurs, au-delà des abonnements au niveau de la rubrique.
Types de filtres
| Type | Description |
|---|---|
| Filtrage par TAG | Fait correspondre les messages selon le texte intégral des chaînes de tags. |
| Filtrage SQL92 | Fait correspondre les attributs des messages selon des expressions SQL92. |
Expressions de filtrage
Les expressions de filtrage définissent les critères de correspondance pour chaque type de filtre. Pour plus de détails sur la syntaxe, consultez Syntaxe des expressions de filtrage.
Contraintes d'abonnement par mode
Mode CLUSTERING : maintenir la cohérence des abonnements au sein du groupe
En mode CLUSTERING, tous les consommateurs d'un même groupe doivent utiliser des relations d'abonnement et une logique de consommation identiques. Des abonnements incohérents provoquent des conflits de consommation, susceptibles d'entraîner une consommation anormale pour certains messages.
Correct : les deux consommateurs s'abonnent à la même rubrique avec le même tag :
// Consumer c1
Consumer c1 = ConsumerBuilder.build(groupA);
c1.subscribe(topicA,"TagA");
// Consumer c2
Consumer c2 = ConsumerBuilder.build(groupA);
c2.subscribe(topicA,"TagA");
Incorrect : les consommateurs d'un même groupe s'abonnent à la même rubrique avec des tags différents :
// Consumer c1
Consumer c1 = ConsumerBuilder.build(groupA);
c1.subscribe(topicA,"TagA");
// Consumer c2
Consumer c2 = ConsumerBuilder.build(groupA);
c2.subscribe(topicA,"TagB");
Mode LITE_SELECTIVE : abonnements flexibles par consommateur
En mode LITE_SELECTIVE, les consommateurs d'un même groupe peuvent s'abonner à des ensembles différents de rubriques Lite. Par exemple, le Consommateur 1 s'abonne à LiteTopic1 et LiteTopic2, tandis que le Consommateur 2 s'abonne à LiteTopic3 et LiteTopic4.
Ajoutez ou supprimez des rubriques Lite de l'ensemble d'abonnement de chaque consommateur en temps réel.
