Tous les produits
Search
Centre de documentation

ApsaraMQ for RocketMQ:Ordered messages

Dernière mise à jour :Aug 09, 2026

Les messages ordonnés sont consommés dans l'ordre exact de leur envoi, selon un modèle strict premier entré, premier sorti (FIFO). Utilisez les messages ordonnés lorsque votre logique métier dépend d'un traitement séquentiel, par exemple dans les domaines des valeurs mobilières et du commerce électronique.

Concepts clés

Les messages ordonnés constituent un type de message dédié dans ApsaraMQ for RocketMQ. Au sein d'une rubrique, ces messages sont publiés et consommés dans un ordre FIFO strict.

La clé de sharding détermine la partition vers laquelle un message est acheminé. Les messages partageant la même clé de sharding sont toujours envoyés à la même partition, ce qui préserve leur ordre relatif.

Les messages partiellement ordonnés garantissent un ordre FIFO au sein de chaque partition d'une rubrique. Les messages sont répartis en partitions selon leur clé de sharding et l'ordre FIFO n'est garanti que pour les messages ayant la même clé. Il n'existe aucune garantie d'ordre entre les messages appartenant à des partitions différentes.

Remarque : Les messages ordonnés, les messages planifiés et les messages transactionnels sont des types mutuellement exclusifs. Un message ne peut pas appartenir à plus d'un de ces types simultanément.

Cas d'utilisation

Les messages partiellement ordonnés conviennent aux systèmes à haut débit qui exigent un séquencement strict au sein de regroupements logiques, mais pas entre eux.

Cas d'utilisation Clé de sharding Pourquoi l'ordre est important
Commandes de commerce électronique ID de commande Les événements de création, de paiement et de remboursement pour une même commande doivent être traités séquentiellement afin de maintenir un état cohérent de la commande.
Vérification utilisateur ID utilisateur Les messages contenant les codes de vérification pour un même utilisateur doivent arriver dans l'ordre où ils ont été demandés.

Tous les systèmes internes de commerce électronique du groupe Alibaba utilisent des messages partiellement ordonnés pour assurer des performances stables et un traitement séquentiel des commandes en ligne.

Fonctionnement

ApsaraMQ for RocketMQ applique l'ordre FIFO lors de trois phases : la publication, le stockage et la consommation.

Ordered message workflow

Publication des messages

Dans le schéma ci-dessus, les messages pour les commandes A et B sont produits dans cet ordre : A1, B1, A2, A3, B2, B3. Les messages de chaque commande doivent être consommés dans le même ordre relatif que celui de leur production : A1 puis A2 puis A3, et B1 puis B2 puis B3.

Avec des messages normaux (non ordonnés), le courtier distribue les messages aux files d'attente selon un algorithme tourniquet (round-robin), ce qui ne préserve pas l'ordre. Avec les messages ordonnés, le courtier achemine tous les messages partageant la même clé de sharding (par exemple, le même ID de commande) vers la même file d'attente, préservant ainsi leur séquence.

L'ordre dépend de l'expéditeur. Le courtier détermine l'ordre des messages en fonction de la séquence d'envoi par un seul producteur ou thread. Si plusieurs producteurs ou threads envoient des messages simultanément, le courtier classe les messages par heure d'arrivée, ce qui peut différer de la séquence métier prévue.

Stockage des messages

Chaque file d'attente logique dans une rubrique de messages ordonnés correspond exactement à une file d'attente physique. Les messages arrivent dans une file d'attente logique dans l'ordre et sont persistés dans la file d'attente physique correspondante dans le même ordre.

Consommation des messages

Le courtier livre les messages aux consommateurs dans l'ordre de leur stockage. Les messages partageant la même clé de sharding sont consommés par un seul thread, ce qui garantit que l'ordre de consommation correspond à la fois à l'ordre de stockage et à l'ordre de publication initial.

Notes d'utilisation

  • Un groupe, un type de message. Chaque groupe est lié à un seul type de rubrique. N'utilisez pas le même groupe pour envoyer ou recevoir à la fois des messages ordonnés et non ordonnés.

  • Ordre mono-producteur. Le courtier préserve l'ordre en fonction de la séquence d'envoi par un seul producteur ou thread. Si plusieurs producteurs ou threads envoient des données simultanément, le courtier classe les messages par heure d'arrivée, ce qui peut différer de la séquence côté métier. Pour garantir un ordre strict entre les producteurs, acheminez tous les messages d'une même séquence métier via une seule instance de producteur.

  • Envoi synchrone uniquement. Les messages ordonnés nécessitent une transmission synchrone fiable. La transmission asynchrone n'est pas prise en charge, car les envois asynchrones ne peuvent pas garantir l'ordre de livraison.

  • Consommation en cluster uniquement. Les messages ordonnés prennent en charge la consommation en cluster, mais pas la consommation par diffusion (broadcasting).

FAQ

Un message peut-il être à la fois un message ordonné, un message planifié et un message transactionnel ?

Non. Les messages ordonnés, planifiés et transactionnels sont des types mutuellement exclusifs.

Quelles régions prennent en charge les messages ordonnés ?

Les messages ordonnés sont disponibles dans toutes les régions Alibaba Cloud et les régions Finance Cloud où ApsaraMQ for RocketMQ est déployé.

Quels modes de transmission les messages ordonnés prennent-ils en charge ?

Uniquement la transmission synchrone fiable. La transmission asynchrone n'est pas prise en charge, car elle ne peut pas garantir un ordre strict.

Les messages ordonnés prennent-ils en charge la consommation par diffusion (broadcasting) ?

Non. Les messages ordonnés prennent uniquement en charge la consommation en cluster.

Exemple de code

SDK TCP

SDK HTTP