Connectez un cluster Apache RocketMQ auto-géré à Function Compute via EventBridge afin de traiter les messages avec votre propre code de fonction. Lorsqu'un message arrive dans votre topic RocketMQ, le déclencheur invoque automatiquement votre fonction en lui transmettant un ou plusieurs messages par invocation, selon votre configuration de traitement par lots.
Fonctionnement
Lorsque vous créez un déclencheur dans Function Compute, le service génère automatiquement un flux d'événements correspondant dans EventBridge, conformément à votre configuration. Consultez les détails du déclencheur dans la console Function Compute et les ressources créées automatiquement dans la console EventBridge.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
EventBridge activé avec les permissions requises accordées
-
Un cluster Apache RocketMQ auto-géré déployé et accessible. Pour déployer rapidement un cluster et commencer à envoyer et recevoir des messages, reportez-vous au guide de démarrage rapide correspondant à votre version :
Apache RocketMQ 5.0 : Démarrage rapideDémarrage rapide
Apache RocketMQ 4.x : Démarrage rapideDémarrage rapide
Un topic créé dans votre instance RocketMQ
Un groupe de consommateurs créé dans votre instance RocketMQ
Limites
L'instance RocketMQ doit être accessible via Internet public ou depuis un Virtual Private Cloud (VPC) Alibaba Cloud.
Si l'accès s'effectue depuis un VPC, celui-ci doit se trouver dans la même région que votre fonction. Vérifiez que le groupe de sécurité autorise le trafic entrant sur le port NameServer de RocketMQ (par défaut : 9876).
Le nombre de déclencheurs RocketMQ est limité par le quota de flux d'événements EventBridge. Pour plus de détails, consultez la rubrique Limites.
Étape 1 : Créer un déclencheur
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur Functions.
Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction à gérer.
Sur la page de détails de la fonction, cliquez sur l'onglet Trigger, puis sur Create Trigger.
Dans le panneau Create Trigger, configurez les paramètres décrits dans le tableau suivant, puis cliquez sur OK.
| Paramètre | Description | Obligatoire | Valeur par défaut | Exemple |
|---|---|---|---|---|
| Trigger type | Sélectionnez Self-built Apache RocketMQ. | Oui | — | Self-built Apache RocketMQ |
| Name | Saisissez un nom pour le déclencheur. | Oui | — | apache-rocketmq-trigger |
| Version or alias | Version ou alias de la fonction à associer au déclencheur. Pour utiliser une version ou un alias spécifique, basculez-y d'abord depuis la page de détails de la fonction. Consultez Gérer les versions et Gérer les alias. | Non | LATEST | LATEST |
| Endpoint | Adresse NameServer de votre cluster RocketMQ. | Oui | — | 192.168.X.X:9876 |
| Topic | Topic de votre instance RocketMQ depuis lequel consommer les messages. | Oui | — | testTopic |
| Group ID | ID du groupe de consommateurs dans votre instance RocketMQ. | Oui | — | testGroup |
| Filter type | Méthode de filtrage des messages : Tag filtre par tag ; SQL filtre selon une expression SQL correspondant aux propriétés et valeurs des messages. | Oui | — | Tag |
| Filter | Expression de filtre correspondant au type de filtre sélectionné. | Oui | — | TagA |
| Authentication mode | Mode d'authentification. Seul ACL est pris en charge. | Oui | — | ACL |
| Username | Nom d'utilisateur ACL. Obligatoire lorsque le paramètre Authentication mode est défini sur ACL. | Oui | — | admin |
| Password | Mot de passe ACL. Obligatoire lorsque le paramètre Authentication mode est défini sur ACL. | Oui | — | |
| Consumer offset | Point de départ de la consommation des messages : Latest offset commence au message le plus récent ; Earliest offset commence au message le plus ancien ; Timestamp commence à un instant précis. | Oui | — | Latest offset |
| Networking | Type de réseau pour la connexion à votre cluster RocketMQ : Internet accède au cluster via Internet public ; VPC accède au cluster via un VPC (nécessite la sélection du VPC, du vSwitch et du groupe de sécurité). | Oui | — | Internet |
| Invocation method | Méthode d'invocation de la fonction par le déclencheur : Sync invocation attend la fin de l'exécution de la fonction et renvoie le résultat (consultez Invocations synchrones) ; Async invocation renvoie une réponse immédiate sans attendre le résultat, ce qui convient aux fonctions de longue durée (consultez Présentation des invocations asynchrones). | Non | Sync invocation | Sync invocation |
| Trigger state | Activation ou non du déclencheur immédiatement après sa création. | Non | Enabled | Enabled |
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 créé, le déclencheur apparaît sous l'onglet Triggers. Pour le modifier ou le supprimer, consultez la rubrique Gérer les déclencheurs.
Étape 2 : Configurer un événement de test
Le déclencheur transmet les messages de RocketMQ à votre fonction sous forme de tableau d'objets d'événement. Simulez une invocation du déclencheur en configurant manuellement un événement de test.
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 le panneau Configure Test Parameters, sélectionnez Create new test event ou Modify existing test event. Saisissez un nom d'événement, collez le contenu de l'événement ci-dessous, puis cliquez sur OK.
[
{
"msgId": "7F0000010BDD2A84AEE70DA49B57****",
"topic": "testTopic",
"systemProperties": {
"UNIQ_KEY": "7F0000010BDD2A84AEE70DA49B57****",
"CLUSTER": "DefaultCluster",
"MIN_OFFSET": "0",
"TAGS": "TagA",
"MAX_OFFSET": "128"
},
"userProperties": {},
"body": "Hello RocketMQ"
}
]
Chaque objet du tableau représente un message RocketMQ. Les champs sont décrits ci-dessous.
| Champ | Type | Description | Exemple |
|---|---|---|---|
msgId |
String | ID du message attribué par Apache RocketMQ. | 7F0000010BDD2A84AEE70DA49B57**** |
topic |
String | Nom du topic. | testTopic |
systemProperties |
Map | Propriétés système définies par RocketMQ. | — |
systemProperties.UNIQ_KEY |
String | Clé unique du message. | 7F0000010BDD2A84AEE70DA49B57**** |
systemProperties.CLUSTER |
String | Nom du cluster RocketMQ. | DefaultCluster |
systemProperties.MIN_OFFSET |
Integer | Offset minimum dans la file d'attente du topic. | 0 |
systemProperties.MAX_OFFSET |
Integer | Offset maximum dans la file d'attente du topic. | 128 |
systemProperties.TAGS |
String | Tag de filtre appliqué au message. | TagA |
userProperties |
Map | Propriétés personnalisées définies par le producteur du message. | {} |
body |
String | Corps du message. | Hello RocketMQ |
Étape 3 : Écrire et tester le code de la fonction
Après la création du déclencheur, écrivez le code de votre fonction pour traiter les messages entrants. En environnement de production, le déclencheur invoque automatiquement la fonction dès que RocketMQ reçoit un nouveau message.
-
Dans l'onglet Code de la page de détails de la fonction, écrivez votre code dans l'éditeur, puis cliquez sur Deploy. L'exemple Node.js suivant lit l'événement et renvoie un résultat :
'use strict'; /* To enable the initializer feature, implement the initializer function as shown below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event and process each message. callback(null, 'return result'); } Cliquez sur Test Function pour exécuter l'événement de test configuré à l'étape précédente.
Étapes suivantes
Outre la console Function Compute, configurez et gérez les déclencheurs à l'aide des outils suivants :
Serverless Devs : Consultez la rubrique Commandes Serverless Devs courantes
SDK : Consultez la rubrique SDK
Pour modifier ou supprimer un déclencheur existant, consultez la rubrique Gérer les déclencheurs.