Simple Message Queue (SMQ, anciennement MNS) est un service de messagerie distribué qui transfère des données et des notifications entre les composants d'une application. Il découple les producteurs des consommateurs afin que chaque composant puisse monter en charge, être déployé et tomber en panne indépendamment.
SMQ propose deux modèles de messagerie :
Modèle de file d'attente — messagerie point à point où chaque message est traité par un seul consommateur.
Modèle de rubrique — messagerie publication-abonnement où un seul message est remis à plusieurs abonnés.
Avantages
|
Avantage |
Description |
|
Évolutivité |
Gère les requêtes simultanées provenant de plusieurs producteurs et consommateurs. Ajustez les paramètres de concurrence pour les adapter à votre charge de travail. |
|
Fiabilité |
Remet chaque message de file d'attente au moins une fois pendant sa période de validité. Retente automatiquement l'envoi des messages de rubrique selon des politiques de nouvelle tentative configurables. |
|
Sécurité |
Utilise le système de compte Alibaba Cloud pour isoler les ressources, de sorte que seules les entités autorisées peuvent accéder aux messages. |
|
Haute disponibilité |
Assure la disponibilité continue de l'infrastructure de messagerie. |
Cas d'utilisation
Découpler les microservices. Acheminez la communication de service à service via des files d'attente plutôt que par des appels directs. Chaque service consomme les messages à son propre rythme, ce qui permet d'éviter qu'un ralentissement dans un composant ne bloque les autres.
Diffusion en éventail (fan-out). Publiez un seul événement sur une rubrique pour atteindre plusieurs systèmes en aval simultanément. Par exemple, un événement de commande passée peut être diffusé vers une file d'attente de traitement, une file d'attente d'entrepôt de données et un endpoint de notification HTTP en même temps.
Lissage de charge. Mettez en mémoire tampon les requêtes entrantes dans une file d'attente lors des pics de trafic. Les consommateurs traitent le backlog à un rythme constant, protégeant ainsi les services backend contre la surcharge.
Traitement asynchrone. Déléguez les tâches chronophages, telles que le traitement d'images, la génération de rapports ou la transformation de données, à des workers d'arrière-plan via une file d'attente.
Méthodes d'accès
SMQ prend en charge l'accès via Internet et à travers un Virtual Private Cloud (VPC). Au sein d'un VPC, configurez le bloc CIDR, la table de routage et la passerelle pour accéder à SMQ aux côtés d'autres services Alibaba Cloud tels que Elastic Compute Service (ECS), ApsaraDB RDS et Server Load Balancer (SLB).
Modèle de file d'attente
Dans le modèle de file d'attente, les producteurs envoient des messages à une file d'attente et les consommateurs extraient les messages de celle-ci. Chaque message ne peut être consommé que par un seul consommateur, ce qui rend ce modèle particulièrement adapté à la distribution de tâches et au traitement de charges de travail.
Fonctionnement
Un producteur envoie un message à une file d'attente.
Un consommateur extrait le message. Une fois récupéré, le message entre dans une période d'invisibilité : il devient masqué pour les autres consommateurs pendant une durée configurable.
Après traitement, le consommateur supprime le message de la file d'attente.
Si le consommateur ne supprime pas le message avant l'expiration de la période d'invisibilité, le message redevient disponible pour qu'un autre consommateur puisse le récupérer.
Flux de messages basé sur une file d'attente 
Types de files d'attente
|
Type |
Description |
|
File d'attente standard |
Type de file d'attente par défaut pour la messagerie polyvalente. |
|
File d'attente différée |
Les messages deviennent disponibles pour la consommation uniquement après un délai spécifié. |
Personnalisez les paramètres de la file d'attente, tels que le délai d'expiration de visibilité, la période de conservation des messages et la longueur maximale des messages, pour les adapter à votre charge de travail.
Garantie de remise
Chaque message d'une file d'attente est remis au moins une fois pendant sa période de validité. SMQ s'intègre au système de compte Alibaba Cloud pour isoler les ressources entre les utilisateurs, garantissant ainsi que seules les entités autorisées peuvent accéder aux messages.
Modèle de rubrique
Dans le modèle de rubrique, un éditeur envoie un message à une rubrique et SMQ pousse le message vers tous les abonnements actifs. Chaque abonnement achemine les messages vers un endpoint spécifié, tel qu'une file d'attente. Ce modèle un-à-plusieurs est bien adapté à la diffusion d'événements et aux schémas de fan-out.
Fonctionnement
Un éditeur envoie un message à une rubrique.
SMQ évalue chaque abonnement attaché à la rubrique.
Si un abonnement possède un tag de filtre, seuls les messages portant le même tag sont remis. Les abonnements sans tag de filtre reçoivent tous les messages.
SMQ pousse le message vers l'endpoint spécifié dans chaque abonnement correspondant.
Flux de messages basé sur une rubrique 
Filtrage des messages
Les abonnements prennent en charge le filtrage basé sur les tags. Assignez un tag à un abonnement pour ne recevoir que les messages portant le même tag. Cela réduit le traitement inutile et permet à plusieurs abonnés de partager une seule rubrique tout en gérant différents types de messages.
Aucun tag sur l'abonnement : Tous les messages publiés sur la rubrique sont remis, qu'ils portent ou non des tags.
Tag sur l'abonnement : Seuls les messages avec un tag correspondant sont remis.
Pour plus de détails, consultez Opérations RESTful API relatives aux rubriques.
Remise des messages
SMQ pousse les messages vers les endpoints spécifiés dans les abonnements. Si une URL de rappel n'est pas disponible, acheminez les messages vers une file d'attente SMQ et récupérez-les en utilisant le modèle de file d'attente. Pour les instructions de configuration, consultez Pousser des messages vers une file d'attente et Envoyer des messages d'un client producteur vers plusieurs clients consommateurs.
SMQ pousse automatiquement les messages pendant la période de validité selon la politique de nouvelle tentative configurée (NotifyStrategy). Cela garantit l'atomicité de la publication des messages.
Formats de message
|
Format |
Contenu |
|
XML |
Corps du message et attributs au format XML. |
|
JSON |
Corps du message et attributs au format JSON. |
|
SIMPLIFIED |
Corps du message uniquement, sans attributs (texte brut). |
Pour plus de détails, consultez NotifyContentFormat.
Surveillance et journalisation
Gestion des journaux
Suivez le cycle de vie complet de chaque message, y compris les événements d'envoi, de réception et de suppression. Pour les messages de rubrique, les journaux capturent également les tentatives de push et les résultats de remise.
Utilisez la gestion des journaux pour résoudre les échecs de remise, auditer le traitement des messages et vérifier le flux de messages de bout en bout. Pour plus de détails, consultez Gestion des journaux.
Intégration avec Cloud Monitor
Surveillez les métriques des files d'attente et configurez des règles d'alerte personnalisées dans la console Cloud Monitor. Cloud Monitor vous notifie lorsque des anomalies se produisent, telles que des échecs de remise de messages. Pour plus de détails, consultez Cloud Monitor.