Tous les produits
Search
Centre de documentation

ApsaraMQ for RocketMQ:Clustering consumption and broadcasting consumption

Dernière mise à jour :Aug 09, 2026

ApsaraMQ for RocketMQ distribue les messages aux consommateurs selon l'un des deux modes suivants : la consommation en cluster (chaque message est remis à un seul consommateur du groupe) ou la consommation par diffusion (chaque message est remis à tous les consommateurs du groupe). Le mode par défaut est la consommation en cluster.

Choisir un mode de consommation

Plusieurs consommateurs identifiés par le même ID de groupe constituent un groupe de consommateurs. Les consommateurs d'un même groupe doivent utiliser la même logique de consommation, s'abonner aux mêmes topics et tags, et recourir au même mode de consommation. Pour plus d'informations, consultez la rubrique Cohérence des abonnements.

Sélectionnez le mode qui correspond à la manière dont les consommateurs d'un groupe doivent recevoir les messages :

Objectif Mode Fonctionnement
Répartir les messages entre plusieurs consommateurs pour un traitement parallèle Consommation en cluster Chaque message est remis à un seul consommateur du groupe. Les consommateurs se partagent la charge de travail.
Remettre chaque message à tous les consommateurs Consommation par diffusion Chaque message est remis à tous les consommateurs du groupe. Chaque consommateur traite l'intégralité du flux de messages.
Si vous ne définissez pas explicitement un mode de consommation, la consommation en cluster est utilisée par défaut.

Consommation en cluster

En mode de consommation en cluster, ApsaraMQ for RocketMQ répartit les messages d'un topic entre les consommateurs d'un groupe. Un seul consommateur traite chaque message.

Clustering consumption

Cas d'utilisation

  • Équilibrage de charge pour un traitement à haut débit : répartissez un grand volume de messages sur plusieurs consommateurs afin que chacun traite un sous-ensemble. L'ajout de consommateurs augmente le débit.

  • Traitement distribué des données : partitionnez le travail entre plusieurs nœuds afin que chaque nœud traite indépendamment une partie des données.

Notes d'utilisation

  • Un message ayant échoué n'est pas nécessairement redistribué au même consommateur. Après un rééquilibrage, le message peut être attribué à un autre consommateur du groupe.

  • La progression de la consommation (offsets) est stockée sur les brokers ApsaraMQ for RocketMQ. Si un consommateur redémarre, il reprend la lecture depuis le dernier offset validé, ce qui évite toute perte de message.

  • La nouvelle tentative de distribution des messages est prise en charge. Si un consommateur ne parvient pas à traiter un message, le broker le redistribue automatiquement. Pour plus de détails, consultez la rubrique Nouvelle tentative de distribution des messages.

Consommation par diffusion

En mode de consommation par diffusion, ApsaraMQ for RocketMQ remet chaque message à tous les consommateurs du groupe. Chaque consommateur traite chaque message au moins une fois. Ce mode convient aux scénarios dans lesquels plusieurs consommateurs traitent simultanément le même groupe de messages, comme le traitement des commandes.

Broadcasting consumption

Cas d'utilisation

  • Notifications et annonces : diffusez une mise à jour à tous les abonnés afin que chaque consommateur puisse agir en conséquence.

  • Synchronisation des données en temps réel : propagez les modifications de données à tous les nœuds d'un système distribué pour garantir la cohérence des caches locaux ou de l'état.

Notes d'utilisation

  • Absence de nouvelle tentative automatique : le broker ne redistribue pas les messages qu'un consommateur ne parvient pas à traiter. Gérez les échecs de consommation directement dans la logique de votre application.

  • Comportement lors du redémarrage : lorsqu'un consommateur redémarre, il commence à consommer les messages à partir du dernier message publié. Les messages publiés pendant que le consommateur était hors ligne sont ignorés.

  • Consommation accrue des ressources : chaque consommateur traitant chaque message, la consommation des ressources est multipliée. Privilégiez la consommation en cluster sauf si votre cas d'utilisation requiert spécifiquement une distribution de type fan-out.

Comparaison des fonctionnalités

La consommation par diffusion sacrifie certaines fonctionnalités avancées au profit d'une distribution de type fan-out. Le tableau suivant indique les fonctionnalités prises en charge par chaque mode.

Fonctionnalité Consommation en cluster Consommation par diffusion
SDK clients TCP Prise en charge Prise en charge
SDK clients HTTP Prise en charge Non pris en charge
Messages ordonnés Prise en charge Non pris en charge
Réinitialisation de l'offset du consommateur Prise en charge Non pris en charge
Nouvelle tentative de distribution des messages Prise en charge Non pris en charge
Requête et alertes concernant les messages accumulés Prise en charge Non pris en charge
Requête d'abonnement Prise en charge Non pris en charge

En mode de consommation par diffusion, le broker ne tente pas de redistribuer les messages ayant échoué, ne suit pas la progression de la consommation et ne prend pas en charge la réinitialisation des offsets. Concevez votre consommateur de manière à gérer ces aspects au niveau de l'application.

Suivi de la progression du consommateur

Le suivi de la progression du consommateur diffère selon les deux modes :

Aspect Consommation en cluster Consommation par diffusion
Stocké sur Broker ApsaraMQ for RocketMQ Client
Après redémarrage Reprend depuis le dernier offset validé Commence à partir du dernier message
Fiabilité Plus élevée – les offsets gérés par le broker survivent aux pannes du client Plus faible – les offsets gérés par le client sont perdus lors du redémarrage ; la probabilité d'une consommation répétée est plus élevée
Nouvelle tentative de distribution des messages Le broker redistribue automatiquement les messages ayant échoué Aucune nouvelle tentative automatique ; gérez les échecs dans votre code

Configurer le mode de consommation

Définissez le paramètre MessageModel dans le code SDK de votre consommateur. Si vous ne définissez pas ce paramètre, la consommation en cluster est utilisée par défaut.

SDK clients TCP

Tous les exemples de SDK clients TCP définissent la propriété MessageModel dans la configuration du consommateur.

Java

  • Consommation en cluster

      // Clustering consumption is the default. This explicit setting is optional.
      properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING);
  • Consommation par diffusion

      properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING);

C/C++

  • Consommation en cluster

      // Clustering consumption is the default. This explicit setting is optional.
      factoryInfo.setFactoryProperty(ONSFactoryProperty::MessageModel, ONSFactoryProperty::CLUSTERING);
  • Consommation par diffusion

      factoryInfo.setFactoryProperty(ONSFactoryProperty::MessageModel, ONSFactoryProperty::BROADCASTING);

.NET

  • Consommation en cluster

      // Clustering consumption is the default. This explicit setting is optional.
      factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.CLUSTERING);
  • Consommation par diffusion

      factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.BROADCASTING);

SDK clients HTTP

Les SDK clients HTTP prennent uniquement en charge la consommation en cluster. Aucune configuration n'est nécessaire.

FAQ

Pourquoi la consommation par diffusion ne prend-elle pas effet après sa configuration ?

Ce problème survient lorsque le type de message ou le SDK ne prend pas en charge la consommation par diffusion :

  • Messages ordonnés : les messages ordonnés prennent uniquement en charge la consommation en cluster. Le paramètre MessageModel est ignoré.

  • SDK client HTTP : les clients HTTP prennent uniquement en charge la consommation en cluster. Pour utiliser la consommation par diffusion, basculez vers un SDK client TCP.

Puis-je mélanger les modes de consommation au sein d'un même groupe ?

Non. Tous les consommateurs d'un groupe doivent utiliser le même mode de consommation.

Si les consommateurs d'un même groupe ont des paramètres MessageModel différents, la consommation par diffusion s'applique à tous les consommateurs du groupe. Par exemple, dans un groupe de cinq consommateurs où deux sont configurés sur CLUSTERING et trois sur BROADCASTING, les cinq utilisent la consommation par diffusion.

Étapes suivantes