ApsaraMQ for RocketMQ est un service de messagerie distribué conçu pour la communication asynchrone entre applications. Déployé sur plusieurs centres de données au sein de chaque région Alibaba Cloud, il garantit la disponibilité de la publication et de l'abonnement aux messages, même en cas de panne d'un centre de données.
Les cas d'utilisation courants incluent :
Découplage asynchrone -- Séparez les services en amont du traitement en aval pour permettre une mise à l'échelle indépendante de chaque composant. Par exemple, un système de commande publie des événements de passation de commande, tandis que les services en aval (paiement, inventaire, expédition) s'y abonnent et les traitent selon leur propre rythme.
Livraison fiable des événements -- Livrez des événements de commande, des notifications de paiement ou des mises à jour d'inventaire avec une garantie de livraison « au moins une fois ».
Exécution de tâches planifiées -- Déclenchez des actions en aval à un moment précis ou après un délai pouvant aller jusqu'à 40 jours. Par exemple, envoyez un rappel de paiement 30 minutes après la passation d'une commande par un utilisateur.
Transactions distribuées -- Coordonnez les opérations multiservices grâce à des messages transactionnels assurant une cohérence à terme. Une écriture en base de données locale et l'envoi d'un message réussissent ou échouent conjointement.
Le schéma suivant présente l'architecture globale des fonctionnalités.

Types de messages
ApsaraMQ for RocketMQ propose quatre types de messages. Choisissez celui qui correspond à vos exigences en matière de livraison et d'ordonnancement.
Normal messages
Normal messages are messages that have no special features in ApsaraMQ for RocketMQ. They are different from featured messages, such as scheduled messages, delayed messages, ordered messages, and transactional messages.
Scheduled messages and delayed messages
ApsaraMQ for RocketMQ allows producers to deliver messages at a specific point in time or after a specific period of time. The maximum time period is 40 days.
Ordered messages
ApsaraMQ for RocketMQ allows consumers to consume messages in the order in which they are delivered.
Transactional messages
ApsaraMQ for RocketMQ provides a distributed transaction feature similar to X/Open XA to ensure ultimate transaction consistency of distributed transactions.
Messages normaux
Messages standards sans contrainte d'ordre ni de planification. Utilisez les messages normaux pour la communication asynchrone générale, comme le transfert de journaux, la distribution de notifications ou le découplage des appels de microservices.
Pour plus de détails, consultez la rubrique Messages normaux.
Messages planifiés et différés
Livrez des messages à un horodatage précis (planifié) ou après un délai défini (différé). La fenêtre de planification maximale est de 40 jours.
Scénarios typiques :
Envoyez un rappel 30 minutes après la passation d'une commande par un utilisateur.
Déclenchez un travail par lot à une heure précise chaque jour.
Pour plus de détails, consultez la rubrique Messages planifiés et messages différés.
Messages ordonnés
Garantissez que les consommateurs reçoivent les messages exactement dans l'ordre de publication. Utilisez les messages ordonnés lorsque la séquence est cruciale, par exemple pour traiter des événements de modification de base de données ou exécuter des workflows en plusieurs étapes où chaque étape dépend de la précédente.
Pour plus de détails, consultez la rubrique Messages ordonnés.
Messages transactionnels
Implémentez des transactions distribuées basées sur le modèle X/Open XA. Un message transactionnel lie une opération de base de données locale à l'envoi d'un message : les deux opérations réussissent ou échouent conjointement, assurant ainsi une cohérence à terme entre les services.
Pour plus de détails, consultez la rubrique Messages transactionnels.
Comparaison des types de messages
Le tableau suivant compare les modes de transmission et les performances selon les types de messages.
| Type de message | Transmission synchrone fiable | Transmission asynchrone fiable | Transmission unidirectionnelle | Transmission multithread | Performances |
|---|---|---|---|---|---|
| Messages normaux | Oui | Oui | Oui | Oui | Les plus élevées |
| Messages transactionnels | Oui | Oui | Oui | Oui | Les plus élevées |
| Messages planifiés et différés | Oui | Oui | Oui | Oui | Les plus élevées |
| Messages ordonnés par partition | Oui | Non | Non | Non | Élevées |
Livraison et fiabilité
Livraison « au moins une fois »
Chaque message est livré au moins une fois. L'architecture distribuée d'ApsaraMQ for RocketMQ peut entraîner des livraisons en double, par exemple après un redémarrage du consommateur ou une interruption réseau. Concevez votre logique de consommation pour qu'elle soit idempotente, afin d'éviter toute incohérence des données en cas de double traitement.
Pour connaître les bonnes pratiques, consultez la rubrique Idempotence des messages.
Nouvelle tentative de livraison des messages
Si un consommateur échoue à traiter un message et renvoie une réponse de nouvelle tentative, ApsaraMQ for RocketMQ relivre le message selon la politique configurée.
Pour plus de détails, consultez la rubrique Nouvelle tentative de livraison des messages.
Files d'attente de lettres mortes
Les messages ayant épuisé toutes les tentatives de nouvelle livraison sont déplacés vers une file d'attente de lettres mortes. Inspectez et retraitsez ces messages ultérieurement sans affecter le flux normal des messages.
Pour plus de détails, consultez la rubrique Files d'attente de lettres mortes.
Filtrage des messages
Attribuez des tags ou des attributs aux messages lors de la publication, puis définissez des conditions de filtre sur les groupes de consommateurs. Le broker évalue chaque message par rapport au filtre et ne livre que les messages correspondants, réduisant ainsi le trafic réseau inutile et la charge de traitement.
Pour plus de détails, consultez la rubrique Filtrage des messages.
Modèles de consommation
Consommation en cluster
En mode cluster, un seul consommateur au sein d'un groupe traite chaque message. Utilisez ce mode pour les charges de travail équilibrées nécessitant un traitement unique de chaque message.
Consommation en diffusion (broadcasting)
En mode diffusion, chaque consommateur du groupe reçoit une copie de chaque message, garantissant ainsi que chaque message est consommé par chaque consommateur au moins une fois. Utilisez ce mode lorsque toutes les instances ont besoin des mêmes données, comme pour l'invalidation du cache ou les mises à jour de configuration.
Pour plus de détails sur les deux modes, consultez la rubrique Consommation en cluster et consommation en diffusion.
Réinitialisation du décalage du consommateur
Réinitialisez le décalage du consommateur pour ignorer les messages accumulés (en passant au dernier décalage) ou pour retraiter les messages historiques (en revenant à un point antérieur).
Pour plus de détails, consultez la rubrique Réinitialiser les décalages des consommateurs.
Protocoles d'accès
ApsaraMQ for RocketMQ prend en charge deux protocoles d'accès. Choisissez en fonction de vos exigences de performance et de votre environnement réseau.
| Protocole | Points forts | Langages pris en charge |
|---|---|---|
| TCP | Plus spécialisé, fiable et stable que l'accès basé sur HTTP. | Java, C, C++, .NET |
| HTTP | API RESTful faciles à utiliser et offrant de puissantes capacités d'accès inter-réseaux. | Java, C++, .NET, Go, Python, Node.js, PHP |
Pour plus de détails sur le SDK TCP, consultez la rubrique Notes de version du SDK TCP. Pour l'utilisation de HTTP, consultez la rubrique Accès HTTP.
Vous pouvez déployer vos applications sur des instances Elastic Compute Service (ECS) d'Alibaba Cloud, sur votre propre infrastructure, sur des appareils mobiles ou IoT pour vous connecter à ApsaraMQ for RocketMQ et échanger des messages. Les développeurs locaux peuvent également accéder à ApsaraMQ for RocketMQ via Internet.
Observabilité
Requête de message
Recherchez des messages spécifiques par ID de message, clé de message ou topic. Utilisez les requêtes de messages pour vérifier l'état de livraison ou déboguer les problèmes de traitement.
Pour plus de détails, consultez la rubrique Interroger un message.
Trace de message
Suivez le parcours complet d'un message, du producteur au broker, puis au consommateur. Les traces de messages aident à identifier où se produisent les échecs ou les retards dans le pipeline de livraison.
Pour plus de détails, consultez la rubrique Interroger une trace de message.
Tableau de bord
Consultez les métriques de production, de consommation et d'accumulation par instance, topic ou groupe. Le tableau de bord offre une vue consolidée de l'état de santé de la messagerie dans votre environnement.
Pour plus de détails, consultez la rubrique Tableau de bord.
Surveillance et alertes
Configurez des alertes sur les métriques des groupes de consommateurs pour détecter les retards ou les échecs de consommation. Recevez des notifications lorsque l'accumulation de messages dépasse un seuil, afin de résoudre les problèmes avant qu'ils n'affectent les services en aval.
Pour plus de détails, consultez la rubrique Surveillance et alertes.
Outils de gestion
Console web
Gérez les topics, les groupes et les instances via une console basée sur un navigateur. La console prend également en charge les requêtes de messages, les recherches de traces de messages et la configuration de la surveillance.
Pour plus de détails, consultez la rubrique Guide de l'utilisateur.
OpenAPI
Intégrez les opérations de gestion d'ApsaraMQ for RocketMQ dans vos propres outils ou pipelines d'automatisation en utilisant l'OpenAPI.
Pour plus de détails, consultez la rubrique Référence de l'API.