Les déclencheurs ApsaraMQ for Kafka appellent des fonctions Function Compute lorsque des messages sont publiés sur un topic Kafka, ce qui permet un traitement piloté par les événements sans interrogation (polling).
Fonctionnement
ApsaraMQ for Kafka s'intègre à Function Compute via EventBridge. Lorsque vous créez un déclencheur dans la console Function Compute, FC crée automatiquement des flux d'événements dans EventBridge en fonction de la configuration du déclencheur.
Une fois activé, le déclencheur surveille le topic spécifié. Lorsqu'un message est publié sur ApsaraMQ for Kafka, EventBridge transmet un ou plusieurs messages par lot à la fonction associée, selon vos paramètres de lot.
Limites
L'instance ApsaraMQ for Kafka doit se trouver dans la même région que la fonction.
Si le nombre de flux d'événements atteint la limite supérieure, aucun autre déclencheur Kafka ne peut être créé. Pour connaître cette limite, consultez les Limites.
Prérequis
Avant de commencer, assurez-vous d'avoir :
EventBridge : Activé EventBridge et accordé des permissions à un utilisateur RAM
Function Compute : Une fonction événementielle
ApsaraMQ for Kafka : Une instance déployée ainsi qu'un topic et un groupe de consommateurs
Étape 1 : Créer un déclencheur
Connectez-vous à la console Function Compute et ouvrez la fonction cible.
Dans l'onglet Configurations, accédez à la page Triggers et cliquez sur Create Trigger.
Configurez les paramètres du déclencheur décrits dans le tableau suivant, puis cliquez sur OK.

| Paramètre | Obligatoire | Description | Exemple |
|---|---|---|---|
| Consumer offset | Oui | Le point à partir duquel EventBridge commence à extraire les messages. Earliest Offset : commence par le message disponible le plus ancien. Latest Offset : commence uniquement par les nouveaux messages. | Earliest Offset |
| Invocation method | Oui | Méthode d'appel de la fonction lorsqu'un événement ou un lot d'événements est transmis. Sync Invocation : attend une réponse avant de traiter le lot suivant ; la limite de charge utile est de 32 Mo. Consultez l'appel synchrone. Async Invocation : renvoie immédiatement une réponse et passe au lot suivant ; la limite de charge utile est de 128 Ko. Consultez l'appel asynchrone. | Sync Invocation |
| Max. Delivery Concurrency | Non | Nombre maximal de messages Kafka transmis simultanément à Function Compute. Valeurs valides : 1–300. Disponible uniquement pour l'option Sync Invocation. Pour augmenter cette limite, accédez au Quota Center of EventBridge, recherchez EventStreaming FC Sink Maximum Concurrent Number of Synchronous Posting et cliquez sur Apply. | 1 |
Pour les paramètres avancés tels que les paramètres de transmission, les politiques de nouvelle tentative et les files d'attente de lettres mortes, consultez les fonctionnalités avancées des déclencheurs.
Étape 2 : (Facultatif) Configurer les paramètres de test
Le déclencheur transmet les messages Kafka à la fonction via le paramètre event. Pour tester la fonction sans publier de message réel, configurez manuellement un événement de test qui simule la charge utile du déclencheur.
Remarque : Le test simulé est utile pour valider votre logique d'analyse, mais il ne teste pas l'intégralité du pipeline du déclencheur. Pour vérifier le comportement de bout en bout, utilisez un message Kafka réel comme décrit à l'étape 3.
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 et le contenu de l'événement, puis cliquez sur OK.
L'exemple suivant montre la structure de l'event pour deux messages groupés :
[
{
"specversion": "1.0",
"id": "8e215af8-ca18-4249-8645-f96c1026****",
"source": "acs:alikafka",
"type": "alikafka:Topic:Message",
"subject": "acs:alikafka_pre-cn-i7m2t7t1****:topic:mytopic",
"datacontenttype": "application/json; charset=utf-8",
"time": "2022-06-23T02:49:51.589Z",
"aliyunaccountid": "164901546557****",
"data": {
"topic": "****",
"partition": 7,
"offset": 25,
"timestamp": 1655952591589,
"headers": {
"headers": [],
"isReadOnly": false
},
"key": "keytest",
"value": "hello kafka msg"
}
},
{
"specversion": "1.0",
"id": "8e215af8-ca18-4249-8645-f96c1026****",
"source": "acs:alikafka",
"type": "alikafka:Topic:Message",
"subject": "acs:alikafka_pre-cn-i7m2t7t1****:topic:mytopic",
"datacontenttype": "application/json; charset=utf-8",
"time": "2022-06-23T02:49:51.589Z",
"aliyunaccountid": "164901546557****",
"data": {
"topic": "****",
"partition": 7,
"offset": 25,
"timestamp": 1655952591589,
"headers": {
"headers": [],
"isReadOnly": false
},
"key": "keytest",
"value": "hello kafka msg"
}
}
]
L'objet data contient les champs spécifiques à Kafka :
| Champ | Type | Exemple | Description |
|---|---|---|---|
topic |
String | TopicName | Nom du topic. |
partition |
Int | 1 | Numéro de la partition à partir de laquelle le message a été consommé. |
offset |
Int | 0 | Décalage (offset) du message au sein de la partition. |
timestamp |
String | 1655952591589 | Horodatage Unix (ms) indiquant le début de la consommation du message. |
Pour les champs d'enveloppe CloudEvents (specversion, id, source, type, etc.), consultez la présentation des événements.
Étape 3 : Écrire et tester le code de la fonction
-
Dans l'onglet Code, rédigez le code de votre fonction dans l'éditeur et cliquez sur Deploy. L'exemple Node.js suivant illustre le gestionnaire 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 the event parameters and process the event. callback(null, 'return result'); } -
Testez la fonction en utilisant l'une des méthodes suivantes :
Test simulé : Cliquez sur Test Function pour utiliser l'événement de test configuré à l'étape 2. Cette méthode est utile pour valider votre logique d'analyse sans connexion Kafka active.
Test de bout en bout : Connectez-vous à la console ApsaraMQ for Kafka, sélectionnez le topic et cliquez sur Send Message pour publier un message réel. Le déclencheur détecte le message et appelle automatiquement la fonction.

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

Étapes suivantes
Pour modifier ou supprimer un déclencheur existant, consultez la rubrique Gérer les déclencheurs.