Les topics Simple Message Queue (formerly MNS) servent de sources d'événements et s'intègrent à EventBridge ainsi qu'à Function Compute. Un déclencheur de topic Simple Message Queue (formerly MNS) exécute automatiquement la fonction associée lors de l'envoi d'un nouveau message vers votre topic Simple Message Queue (formerly MNS). Vous pouvez ainsi mettre en œuvre facilement un traitement personnalisé pour les messages entrants.
Informations générales
Message Queue for MNS est un service de messagerie distribué efficace, fiable, sécurisé, simple d'utilisation et évolutif. Il permet aux développeurs de transmettre des données et des notifications entre divers composants distribués afin de construire des systèmes faiblement couplés. Dans Message Queue for MNS, un topic constitue la destination de publication des messages. Un éditeur appelle l'API PublishMessage pour publier un message vers un topic, que reçoivent ensuite les abonnés. Pour plus de détails sur l'API, consultez PublishMessage.
Configurer un déclencheur de topic Simple Message Queue (formerly MNS) inscrit votre fonction comme abonnée au topic Simple Message Queue (formerly MNS). Lorsqu'un éditeur envoie un message au topic Simple Message Queue (formerly MNS), son contenu est transmis à la fonction pour en déclencher l'exécution. Ce contenu est passé via le paramètre event au gestionnaire de la fonction. Pour plus d'informations, consultez Informations de base.
L'intégration de Message Queue for MNS et de Function Compute offre les avantages suivants :
Traitez les messages de manière avancée avant leur envoi par e-mail ou SMS.
Évitez d'héberger un service pour un endpoint HTTP.
Mettez en œuvre des traitements personnalisés riches, tels que l'envoi de messages vers Slack ou la persistance de messages spécifiques.
Prérequis
-
Function Compute
-
Simple Message Queue (formerly MNS)
Remarques d'utilisation
Le topic Message Queue for MNS et la fonction Function Compute doivent se trouver dans la même région.
-
Évitez les invocations récursives.
Lorsque vous écrivez le code de la fonction, assurez-vous qu'elle ne contient pas la logique suivante : le Topic A déclenche la Fonction B, qui publie ensuite un nouveau message vers le Topic A. Cela risque de provoquer des invocations récursives infinies.
Étape 1 : Créer un déclencheur de topic Message Queue for MNS
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez .
Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction cible.
Sur la page de détails de la fonction, sélectionnez l'onglet Trigger, puis cliquez sur Create Trigger.
-
Dans le panneau Create Trigger, configurez les paramètres, puis cliquez sur OK.
Paramètre
Actions
Exemple
Trigger Type
Sélectionnez Message Queue for MNS Topic Trigger - Asynchronous Invocation.
Simple Message Queue (formerly MNS) topic trigger
Name
Saisissez un nom de déclencheur personnalisé.
trigger-mns
Version or Alias
La valeur par défaut est LATEST. Pour créer un déclencheur pour une autre version ou un autre alias, basculez d'abord vers cette version ou cet alias dans le coin supérieur droit de la page de détails de la fonction. Pour une vue d'ensemble des versions et des alias, consultez Gérer les versions et Gérer les alias.
LATEST
MNS region
Sélectionnez la région où se trouve le topic. Le topic Simple Message Queue (formerly MNS) et la fonction Function Compute doivent se trouver dans la même région.
China (Chengdu)
Topic
Choisissez le topic dans la liste.
Mytopic
Filter tag
Saisissez un tag de filtrage de message.
La fonction ne se déclenche que lors de la réception de messages contenant le tag de filtrage spécifié.
tag
Event format
Sélectionnez un format d'événement. Valeurs valides :
STREAM
JSON
JSON
Retry policy
Choisissez une politique de nouvelle tentative. Valeurs valides :
Backoff Retry
Exponential decay retry
Pour obtenir des conseils sur le choix d'une politique de nouvelle tentative, consultez NotifyStrategy.
Backoff Retry
Role Name
Sélectionnez AliyunMNSNotificationRole.
RemarqueS'il s'agit de votre première création de ce type de déclencheur, après avoir cliqué sur OK, sélectionnez Authorize Now dans la boîte de dialogue qui s'affiche.
AliyunMNSNotificationRole
Étape 2 : Configurer les paramètres d'entrée de la fonction
Dans l'onglet Code de la page de détails de la fonction, cliquez sur l'icône
située à côté de Test Function, puis sélectionnez Configure Test Parameters dans la liste déroulante.-
Dans le panneau Configure Test Parameters, sélectionnez Create New Test Event ou Modify Existing Test Event. Saisissez un nom d'événement ainsi que son contenu, puis cliquez sur OK.
Les messages publiés vers un topic Simple Message Queue (formerly MNS) sont traités selon le notifyContentFormat. Le message traité correspond au paramètre
eventdu gestionnaire de la fonction. Pour plus d'informations, consultez NotifyContentFormat.-
Si vous avez défini Event Format sur STREAM lors de la création du déclencheur :
-
Si le message ne comporte pas d'attributs (MessageAttributes), le format de l'événement est le suivant.
RemarqueEn l'absence d'attributs de message (MessageAttributes), le contenu de l'événement correspond au corps brut du message sous forme de chaîne.
# Message body. 'hello topic' -
Si le message inclut des attributs (MessageAttributes), le format de l'événement est le suivant.
RemarqueLe contenu de l'événement comprend des paires clé-valeur liées aux MessageAttributes. Pour plus d'informations, consultez PublishMessage.
{ "body": "hello topic", "attrs": { "Extend": "{\\"key\\":\\"value\\"}" } }
-
-
Si vous avez défini Event Format sur JSON lors de la création du déclencheur :
-
Si le message ne comporte pas d'attributs (MessageAttributes), le format de l'événement est le suivant.
{ "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216480040, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C082B923D4EAC694B76D928****" } -
Si le message inclut des attributs (MessageAttributes), le format de l'événement est le suivant.
RemarqueLe contenu de l'événement comprend des paires clé-valeur liées aux MessageAttributes. Pour plus d'informations, consultez PublishMessage.
{ "key": "value", "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216302888, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C281B283D4EAC694B742528****" }
-
Le tableau suivant décrit les champs du paramètre
event.Paramètre
Type
Exemple
Description
key
String
value
Paires clé-valeur issues des attributs du message.
TopicOwner
String
118620210433****
ID du compte propriétaire du topic.
Message
String
hello topic
Contenu du message.
Subscriber
String
118620210433****
ID du compte de l'utilisateur.
PublishTime
Int
1550216302888
Heure de publication du message.
SubscriptionName
String
test-fc-subscribe
Nom de l'abonnement.
MessageMD5
String
BA4BA9B48AC81F0F9C66F6C909C3****
Hachage MD5 du corps du message.
TopicName
String
Mytopic
Nom du topic.
MessageId
String
2F5B3C281B283D4EAC694B742528****
ID du message.
-
Étape 3 : Écrire et tester le code de la fonction
Une fois le déclencheur de topic Simple Message Queue (formerly MNS) créé, écrivez et testez le code de votre fonction afin de vérifier son bon fonctionnement.
-
Dans l'onglet Code de la page de détails de la fonction, écrivez le code dans l'éditeur, puis cliquez sur Deploy.
Cette section prend le code Python comme exemple. Utilisez l'exemple de code ci-dessous comme modèle pour un déclencheur de topic Simple Message Queue (formerly MNS).
import json import logging def handler(event, context): logger = logging.getLogger() logger.info("mns_topic trigger event = {}".format(event)) # For example, record the event to Tablestore. return "OK" -
Cliquez sur Test Function.
Une fois l'exécution terminée, consultez le résultat au-dessus de l'onglet Code.
Plus d'informations
Outre la console Function Compute, vous pouvez configurer des déclencheurs des manières suivantes :
Utilisez l'outil Serverless Devs pour configurer les déclencheurs. Pour plus d'informations, consultez Commandes courantes de Serverless Devs.
Recourez aux SDK pour configurer les déclencheurs. Pour plus d'informations, consultez SDK.
Pour modifier ou supprimer un déclencheur, consultez Gérer les déclencheurs.