Tous les produits
Search
Centre de documentation

ApsaraMQ for RocketMQ:Topics

Dernière mise à jour :Sep 21, 2026

Cette rubrique décrit la définition, la relation de modèle, les attributs internes, les contraintes comportementales, la compatibilité des versions et les notes d'utilisation des topics dans ApsaraMQ for RocketMQ.

Définition

Dans ApsaraMQ for RocketMQ, un topic est un conteneur de premier niveau utilisé pour transmettre et stocker des messages. Un topic identifie les messages qui partagent la même logique métier.

Les topics offrent les avantages suivants :

  • Catégorisation et isolation des données

    Lorsque vous concevez des solutions utilisant ApsaraMQ for RocketMQ, vous pouvez créer différents topics pour gérer les messages de différents types métier. Cette pratique garantit un stockage et des abonnements isolés.

  • Gestion des identités et des autorisations

    Les messages dans ApsaraMQ for RocketMQ sont anonymes. Vous pouvez utiliser un topic pour gérer les identités et les permissions des messages d'une catégorie spécifique.

Relation de modèle

La figure suivante illustre la position d'un topic dans le modèle de domaine de ApsaraMQ for RocketMQ.

主题

Dans ApsaraMQ for RocketMQ, un topic est un conteneur de premier niveau pour toutes les ressources de messages. Toutefois, un topic est un concept logique et non le conteneur de messages réel.

Un topic se compose d'une ou plusieurs files d'attente qui gèrent le stockage des messages et la mise à l'échelle horizontale. Toutes les contraintes et les paramètres d'attribut d'un topic sont appliqués au niveau de la file d'attente.

Si un topic est de type Lite, vous pouvez créer des ressources LiteTopic sous celui-ci. Par défaut, chaque LiteTopic se compose d'une file d'attente.

Concepts

Topic

Dans ApsaraMQ for RocketMQ, un topic est un conteneur de premier niveau utilisé pour transmettre et stocker des messages. Il identifie les messages qui partagent la même logique métier et est identifié de manière unique par son nom de topic.

LiteTopic

Si un topic est de type Lite, vous pouvez créer des LiteTopics sous celui-ci. La combinaison du topic et du LiteTopic identifie de manière unique le conteneur de stockage des messages. Par défaut, chaque conteneur de stockage se compose d'une file d'attente.

Attributs internes

Nom du topic

  • Définition : Le nom d'un topic. Le nom doit être globalement unique au sein d'un cluster et sert à identifier le topic.

  • Valeur : Vous pouvez spécifier le nom du topic lors de sa création.

  • Contraintes : Pour plus d'informations, consultez Limites des paramètres.

Files d'attente

  • Définition : Les files d'attente sont les composants sous-jacents d'un topic et servent de conteneurs réels pour le stockage des messages. Un topic contient une ou plusieurs files d'attente dans lesquelles les messages sont stockés. Pour plus d'informations, consultez Files d'attente (MessageQueue).

  • Valeur : Le système alloue des files d'attente à un topic en fonction du nombre de files d'attente spécifié. Vous définissez le nombre de files d'attente lors de la création du topic.

  • Contraintes : Un topic doit contenir au moins une file d'attente.

Type de message

  • Définition : Le type de message pris en charge par le topic.

  • Valeur : Vous pouvez sélectionner un type de message lors de la création d'un topic. ApsaraMQ for RocketMQ prend en charge les types de topics suivants :

    • Normal : Messages normaux. Un message normal n'a pas de sémantique spéciale et n'est pas corrélé avec d'autres messages.

    • FIFO : Messages ordonnés. ApsaraMQ for RocketMQ utilise un groupe de messages (MessageGroup) pour spécifier l'ordre d'un ensemble de messages. Cela garantit que les messages sont livrés exactement dans l'ordre où ils ont été envoyés.

    • Delay : Messages planifiés et différés. Vous pouvez spécifier un délai pour empêcher la livraison immédiate d'un message après son envoi. Le message devient visible pour les consommateurs uniquement après le délai spécifié.

    • Transaction : Messages transactionnels. ApsaraMQ for RocketMQ prend en charge les messages transactionnels distribués. Il garantit la cohérence transactionnelle pour les mises à jour de base de données et les appels de messages.

    • Lite : Messages Lite. La fonctionnalité LiteTopic est disponible uniquement pour les topics de type de message Lite.

  • Contraintes : Chaque topic ne prend en charge qu'un seul type de message.

Délai d'expiration LiteTopic

  • Définition : Le délai d'expiration des ressources LiteTopic au sein d'un topic. Un LiteTopic est automatiquement supprimé si le temps écoulé depuis la dernière écriture d'un message dépasse le délai d'expiration spécifié.

  • Valeur : La valeur est exprimée en minutes et peut être un nombre compris entre 30 et 720, ou -1. Une valeur de -1 indique que le LiteTopic n'expire jamais.

  • Limites : Ce paramètre est valide uniquement lorsque le type de message est Lite.

Contraintes comportementales

Vérification forcée du type de message

Dans ApsaraMQ for RocketMQ 5.x, les types de messages sont gérés et traités indépendamment au sein des topics. Le système vérifie le type d'un message envoyé par rapport au type de message défini pour le topic de destination. Si la vérification échoue, la demande d'envoi est rejetée et le système renvoie une exception d'incompatibilité de type. Les règles de vérification suivantes s'appliquent :

  • Cohérence du type de message

    Le type du message envoyé doit correspondre au type de message défini pour le topic de destination.

  • Type de message unique par topic

    Chaque topic ne prend en charge qu'un seul type de message. Vous ne pouvez pas envoyer des messages de différents types vers le même topic.

Scénarios d'utilisation incorrecte courants

  • Envoi de messages d'un type incompatible

    Par exemple, si vous créez un topic et définissez son type de message comme ordonné, mais que vous envoyez ensuite un message transactionnel vers ce topic, la demande d'envoi est rejetée et une exception d'incompatibilité de type est renvoyée.

  • Mélange de types de messages dans un seul topic

    Par exemple, vous créez un topic et définissez son type de message comme normal. Si vous envoyez ensuite à la fois des messages normaux et des messages ordonnés vers ce topic, les demandes d'envoi des messages ordonnés sont rejetées et une exception d'incompatibilité de type est renvoyée.

Compatibilité des versions

La vérification forcée du type de message s'applique uniquement aux brokers ApsaraMQ for RocketMQ 5.x.

Les brokers ApsaraMQ for RocketMQ 4.x n'appliquent pas la vérification du type de message. Toutefois, nous vous recommandons de maintenir la cohérence du type de message lorsque vous utilisez ces brokers.

Notes d'utilisation

Planifiez les topics en fonction des catégories métier

Lorsque vous concevez des topics dans ApsaraMQ for RocketMQ, nous vous recommandons de regrouper les messages par catégorie métier principale. Regroupez les messages ayant les mêmes attributs fonctionnels au sein du même domaine métier dans un seul topic. Lorsque vous déterminez la granularité du topic, tenez compte des facteurs suivants :

  • Cohérence du type de message : Différents types de messages, tels que les messages ordonnés et les messages normaux, nécessitent des topics distincts.

  • Pertinence métier : Si les activités ne sont pas directement liées, utilisez des topics différents. Par exemple, les messages de transaction Taobao et les messages logistiques Freshippo n'ont aucun chevauchement métier et nécessitent des topics distincts. Pour les messages au sein d'une même activité, tels que les messages de transaction Taobao, vous pouvez utiliser le même topic pour les commandes de vêtements pour femmes et pour hommes. Toutefois, si le volume d'activité est important ou si les sous-modules nécessitent une catégorisation supplémentaire des types de commande, vous pouvez également diviser les messages en deux topics séparés pour les commandes de vêtements pour hommes et pour femmes.

  • Volume de messages : Nous vous recommandons d'utiliser des topics différents pour les messages métier qui diffèrent en magnitude ou en exigences de temporalité. Par exemple, certains messages métier ont un volume très faible mais sont hautement sensibles au temps. Si ces messages partagent un topic avec une activité générant un volume élevé de messages, le temps d'attente pour les messages sensibles au temps augmente.

Exemple de division correcte des topics : Dans un scénario de commerce en ligne, vous pouvez utiliser un topic pour les messages de transaction de commande, tels que la création de commande, le paiement et l'annulation. Vous pouvez utiliser un topic séparé pour les messages liés à la logistique et un autre topic pour les messages de gestion des points.

Exemples de division incorrecte des topics :

  • Division avec une granularité excessivement grossière : Cela conduit à une mauvaise isolation métier et complique l'O&M indépendante et la gestion des pannes. Un exemple consiste à utiliser un seul topic pour tous les messages de transaction et de logistique.

  • Division avec une granularité excessivement fine : Cela consomme des ressources de topic excessives et peut surcharger le système. Un exemple consiste à créer un topic séparé pour chaque ID utilisateur.

Utilisez un seul topic pour un type de message et évitez de mélanger les types

Les topics dans ApsaraMQ for RocketMQ sont conçus pour isoler les activités. Nous vous recommandons d'utiliser des topics différents pour les messages ayant des logiques métier différentes. Les messages ayant la même logique métier ont le même type de message. Par conséquent, un seul topic ne doit être utilisé que pour un seul type de message.

Évitez d'utiliser des mécanismes automatisés pour la gestion des topics

Dans l'architecture ApsaraMQ for RocketMQ, les topics sont des ressources et des conteneurs de premier niveau. Ils disposent de capacités indépendantes pour la gestion des autorisations, la collecte de métriques d'observabilité et la surveillance. La création et la gestion des topics consomment des ressources système. Par conséquent, vous devez gérer strictement les ressources de topic dans un environnement de production. N'ajoutez, ne supprimez, ne modifiez et n'interrogez pas arbitrairement les topics.