Les déclencheurs de file d'attente Simple Message Queue (anciennement MNS) vous permettent d'exécuter automatiquement une fonction Function Compute dès qu'un message arrive dans une file d'attente. Ce mécanisme s'appuie sur EventBridge : lorsque vous créez le déclencheur dans la console Function Compute, celle-ci génère pour vous les flux d'événements requis dans EventBridge. Pour en savoir plus sur les flux d'événements, consultez la rubrique Présentation.
Une fois le déclencheur activé, chaque message placé dans la file d'attente source entraîne l'exécution de la fonction associée. Les messages sont livrés individuellement ou par lots, selon votre configuration. Cette approche convient parfaitement au traitement de données en continu de bout en bout.
Contraintes
La file d'attente Simple Message Queue (anciennement MNS) et la fonction Function Compute doivent se trouver dans la même région.
Si votre compte Alibaba Cloud atteint la limite de flux d'événements EventBridge, vous ne pouvez pas créer d'autres déclencheurs de file d'attente Simple Message Queue (anciennement MNS). Pour connaître les limites actuelles, consultez la rubrique Limites.
Prérequis
Avant de commencer, assurez-vous d'avoir effectué les opérations suivantes :
Activé EventBridge et accordé les autorisations nécessaires : Activer EventBridge et accorder des autorisations à un utilisateur RAM
Créé une fonction événementielle Function Compute : Créer une fonction événementielle
Activé Simple Message Queue (anciennement MNS) et autorisé l'accès pour les utilisateurs RAM : Activer SMQ et autoriser les utilisateurs RAM à accéder à SMQ
Créé une file d'attente dans Simple Message Queue (anciennement MNS) : Créer une file d'attente
Étape 1 : Créer un déclencheur
Connectez-vous à la console Function Compute et cliquez sur la fonction que vous souhaitez utiliser.
Sur la page des détails de la fonction, cliquez sur l'onglet Configurations, puis accédez à Triggers et cliquez sur Create Trigger.
-
Renseignez les paramètres du déclencheur. Le champ clé est Invocation Method : pour plus de détails, consultez les rubriques Appel synchrone et Appel asynchrone.
Méthode d'appel Comportement Charge utile maximale Cas d'utilisation Sync Invocation Function Compute attend le retour de la fonction avant de livrer l'événement ou le lot suivant 32 Mo Lorsque l'ordre ou le traitement séquentiel est important Async Invocation Function Compute livre l'événement et passe immédiatement au suivant ; la fonction s'exécute en arrière-plan 128 Ko Scénarios à haut débit où vous souhaitez consommer les événements rapidement Cliquez sur OK.

Pour les paramètres avancés tels que les configurations de push, les politiques de nouvelle tentative et les files d'attente de lettres mortes, consultez la rubrique Fonctionnalités avancées des déclencheurs.
Une fois le déclencheur créé, il apparaît dans l'onglet Triggers. Pour le modifier ou le supprimer, consultez la rubrique Gérer les déclencheurs.
Étape 2 : (Facultatif) Configurer les paramètres de test
La fonction reçoit les événements Simple Message Queue (anciennement MNS) via le paramètre event — un tableau d'objets au format CloudEvents. Pour tester le code de votre fonction sans envoyer de message réel, simulez l'événement manuellement.
Dans l'onglet Code, cliquez sur l'icône

située à côté de Test Function et sélectionnez Configure Test Parameters.Dans le panneau Configure Test Parameters, cliquez sur Create New Test Event ou Modify Existing Test Event, saisissez un nom d'événement ainsi que le contenu de l'événement ci-dessous, puis cliquez sur OK.
Exemple de charge utile event :
[
{
"id": "c2g71017-6f65-fhcf-a814-a396fc8d****",
"source": "MNS-Function-mnstrigger",
"specversion": "1.0",
"type": "mns:Queue:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mns:cn-hangzhou:164901546557****:queues/zeus",
"time": "2021-04-08T06:28:17.093Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T07:06:34.028Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "MNS-Function-mnstrigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
},
{
"id": "d2g71017-6f65-fhcf-a814-a396fc8d****",
"source": "MNS-Function-mnstrigger",
"specversion": "1.0",
"type": "mns:Queue:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mns:cn-hangzhou:164901546557****:queues/zeus",
"time": "2021-04-08T06:28:17.093Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T07:06:34.028Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "MNS-Function-mnstrigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
}
]
Référence des champs d'événement
Chaque élément du tableau respecte la spécification CloudEvents.
Champs d'enveloppe CloudEvents
| Champ | Type | Exemple | Description |
|---|---|---|---|
id |
String | c2g71017-6f65-fhcf-a814-a396fc8d**** |
Identifiant unique de l'événement |
source |
String | MNS-Function-mnstrigger |
Identifiant de la source de l'événement (nom du bus d'événements) |
type |
String | mns:Queue:SendMessage |
Type d'événement |
subject |
String | acs:mns:cn-hangzhou:...:queues/zeus |
ARN de la file d'attente source |
time |
String | 2021-04-08T06:28:17.093Z |
Heure de mise en file d'attente du message (ISO 8601) |
specversion |
String | 1.0 |
Version de la spécification CloudEvents |
datacontenttype |
String | application/json; charset=utf-8 |
Type de contenu du champ data |
aliyunregionid |
String | cn-chengdu |
Région où réside la file d'attente |
aliyunaccountid |
String | 164901546557**** |
ID du compte Alibaba Cloud |
aliyunpublishtime |
String | 2021-10-15T07:06:34.028Z |
Heure de publication de l'événement par EventBridge |
Champs data
| Champ | Type | Exemple | Description |
|---|---|---|---|
requestId |
String | 606EA3074344430D4C81**** |
Identifiant unique de la requête d'envoi de message |
messageId |
String | C6DB60D1574661357FA227277445**** |
Identifiant unique du message |
messageBody |
String | TEST |
Contenu du corps du message |
Étape 3 : Écrire et tester la fonction
Après avoir créé le déclencheur, rédigez le code de votre fonction, déployez-le, puis vérifiez que le déclencheur fonctionne de bout en bout.
Rédiger et déployer le code de la fonction
Dans l'onglet Code, écrivez votre gestionnaire et cliquez sur Deploy Code.
L'exemple Node.js suivant illustre la rédaction du code de fonction :
'use strict';
/*
To enable the initializer feature
please implement the initializer function as below:
exports.initializer = (context, callback) => {
console.log('initializing');
callback(null, '');
};
*/
exports.handler = (event, context, callback) => {
console.log("event: %s", event);
// Parse and process event.
callback(null, 'return result');
}
Tester la fonction
Utilisez l'une des méthodes suivantes :
Événement simulé : si vous avez configuré un événement de test à l'étape 2, cliquez sur Test Function dans l'onglet Code.
Message réel : connectez-vous à la console Simple Message Queue (anciennement MNS), sélectionnez la file d'attente source et cliquez sur Send Message.

Une fois la fonction exécutée, consultez la sortie dans Real-time Logs.

Étapes suivantes
Modifier ou supprimer un déclencheur : Gérer les déclencheurs
Configurer des politiques de nouvelle tentative et des files d'attente de lettres mortes : Fonctionnalités avancées des déclencheurs