Lorsque des messages arrivent dans une file d'attente Simple Message Queue (anciennement MNS) (SMQ), vous pouvez les acheminer vers des services en aval tels que Function Compute pour traitement. Les flux d'événements EventBridge connectent une file d'attente SMQ à un service cible afin de livrer automatiquement les messages, sans interrogation ni intégrations personnalisées.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Une instance EventBridge activée avec les autorisations requises accordées à un utilisateur Resource Access Management (RAM). Pour plus d'informations, consultez Activer EventBridge et accorder des autorisations à un utilisateur RAM
Une file d'attente SMQ. Pour plus d'informations, consultez Activer SMQ et autoriser les utilisateurs RAM à accéder à SMQ
Créer un flux d'événements avec une source SMQ
Connectez-vous à la console EventBridge. Dans le volet de navigation de gauche, cliquez sur Event Streams.
Dans la barre de navigation supérieure, sélectionnez une région et cliquez sur Create Event Stream.
Sur la page Create Event Stream, spécifiez les paramètres Task Name et Description.
Configurez la source d'événements, le filtrage, la transformation, la destination et les propriétés de la tâche comme décrit dans les sections suivantes. Cliquez ensuite sur Save.
Source
À l'étape Source, définissez Data Provider sur SMQ et configurez les paramètres suivants. Cliquez ensuite sur Next Step.
| Paramètre | Description | Valeurs valides | Exemple |
|---|---|---|---|
| Queue Name | La file d'attente SMQ à utiliser comme source d'événements. | N/A | test-queue |
| Base64 Decoding | Indique s'il faut décoder les données du message depuis Base64 avant la livraison à la destination. Activez cette option si vos messages SMQ sont encodés en Base64. | N/A | test |
| Messages | Le nombre maximal de messages pouvant être envoyés lors de chaque appel de fonction. Les requêtes ne sont envoyées que lorsque le nombre de messages en attente atteint la valeur spécifiée. | 1 à 10 000 | 100 |
| Interval (Unit: Seconds) | L'intervalle de temps auquel vous souhaitez appeler la fonction. Le système envoie les messages agrégés à Function Compute lorsque l'intervalle spécifié est atteint. Définissez la valeur sur 0 pour envoyer les messages immédiatement après l'agrégation. | 0 à 15 | 3 |
Filtrage, transformation et destination
Aux étapes Filtering, Transformation et Sink, configurez la méthode de filtrage des événements, la règle de transformation des événements et la cible de l'événement.
Pour plus d'informations sur la transformation des événements, consultez Utiliser Function Compute pour nettoyer les messages.
Politique de nouvelle tentative et file d'attente de lettres mortes
Sous Task Property, spécifiez la politique de nouvelle tentative et la file d'attente de lettres mortes pour le flux d'événements.
Pour plus d'informations, consultez Politiques de nouvelle tentative et files d'attente de lettres mortes.
Activer le flux d'événements
Revenez à la page Event Streams et localisez le flux d'événements que vous avez créé.
Dans la colonne Actions, cliquez sur Enable.
Le démarrage du flux d'événements prend entre 30 et 60 secondes. Suivez la progression dans la colonne Status de la page Event Streams.
Exemple d'événement
Chaque message provenant de la file d'attente SMQ est livré sous forme d'événement conforme à la norme CloudEvents 1.0. L'exemple suivant illustre la structure d'un événement type :
{
"specversion": "1.0",
"id": "bffb9722-9c48-407b-9895-b038f78f****",
"source": "acs:mns",
"type": "mns:Queue:SendMessage",
"subject": "acs:mns:cn-hangzhou:123456789098****:queues/zeus",
"datacontenttype": "application/json; charset=utf-8",
"time": "2021-04-08T06:28:17.093Z",
"aliyunpublishtime": "2021-04-08T06:30:31.367Z",
"aliyuneventbusname": "mybus",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
}
Pour plus d'informations sur les champs d'enveloppe CloudEvents (specversion, id, source, type, subject, time, etc.), consultez Présentation.
Champs de données
L'objet data contient la charge utile du message SMQ d'origine :
| Champ | Type | Description |
|---|---|---|
requestId |
String | Un identifiant unique pour la requête qui a envoyé le message à la file d'attente. |
messageId |
String | Un identifiant unique pour le message dans la file d'attente. |
messageBody |
String | Le contenu du corps du message. |