Les déclencheurs de file d'attente Simple Message Queue (anciennement MNS) permettent d'exécuter automatiquement une fonction Function Compute dès qu'un message arrive dans une file d'attente. Ce mécanisme repose sur EventBridge : lorsque vous créez le déclencheur dans la console Function Compute, les flux d'événements nécessaires sont automatiquement provisionnés dans EventBridge pour votre compte. Pour plus d'informations sur les flux d'événements, consultez Vue d'ensemble.
Une fois le déclencheur actif, chaque message ajouté à la file d'attente source provoque l'exécution de la fonction associée. Selon votre configuration de traitement par lots, les messages sont remis individuellement ou par groupes. Cette architecture convient particulièrement au traitement de données en streaming de bout en bout.
Contraintes
La file d'attente Simple Message Queue (anciennement MNS) et la fonction Function Compute doivent résider dans la même région.
Si votre compte Alibaba Cloud atteint la limite de flux d'événements EventBridge, la création de nouveaux déclencheurs de file d'attente Simple Message Queue (anciennement MNS) est impossible. Pour connaître les limites en vigueur, reportez-vous à Limites.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
EventBridge activé avec les permissions appropriées : Activer EventBridge et accorder des permissions à un utilisateur RAM
Une fonction événementielle Function Compute : Créer une fonction événementielle
Simple Message Queue (anciennement MNS) activé avec accès autorisé pour les utilisateurs RAM : Activer SMQ et autoriser les utilisateurs RAM à accéder à SMQ
Une file d'attente créée 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 souhaitée.
Dans la page de 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 essentiel est Invocation Method : pour plus de détails, consultez Invocation synchrone et Invocation asynchrone.
Méthode d'invocation Comportement Charge utile maximale Cas d'usage Sync Invocation Function Compute attend le retour de la fonction avant de remettre l'événement ou le lot suivant 32 Mo Traitement ordonné ou séquentiel requis Async Invocation Function Compute remet 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 nécessitant une consommation rapide des événements 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, reportez-vous à Fonctionnalités avancées des déclencheurs.
Une fois créé, le déclencheur apparaît dans l'onglet Triggers. Pour le modifier ou le supprimer, consultez 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) sous forme de paramètre event — un tableau d'objets au format CloudEvents. Pour tester votre code sans envoyer de message réel, simulez manuellement l'événement.
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 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 |
Identificateur 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 la création du déclencheur, écrivez le code de votre fonction, déployez-le, puis vérifiez le bon fonctionnement de bout en bout.
Écrire et déployer le code de la fonction
Dans l'onglet Code, rédigez votre handler et cliquez sur Deploy Code.
L'exemple Node.js suivant illustre l'écriture du code de la 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, puis cliquez sur Send Message.

Après l'exécution de la fonction, consultez la sortie dans Real-time Logs.

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