Tous les produits
Search
Centre de documentation

Function Compute:Fonctionnalités avancées des déclencheurs

Dernière mise à jour :Aug 12, 2026

Les déclencheurs de source d'événements personnalisés dans Function Compute prennent en charge l'envoi par lot, les formats d'événements configurables, les politiques de nouvelle tentative, la tolérance aux pannes et les files d'attente de lettres mortes. Ces fonctionnalités contrôlent la remise des messages à votre fonction et le comportement adopté en cas d'échec.

Les fonctionnalités décrites sur cette page s'appliquent uniquement aux déclencheurs de source d'événements personnalisés : Déclencheurs de file d'attente Simple Message Queue (anciennement MNS) , Déclencheurs RocketMQ , Déclencheurs RabbitMQ , Déclencheurs Kafka et Déclencheurs DTS .

Méthodes d'invocation

Les déclencheurs Function Compute prennent en charge deux méthodes d'invocation. La limite de taille du body détermine le nombre de messages agrégeables dans une seule requête.

Méthode d'invocation **Limite de taille du body** Délai d'expiration maximal
Invocation synchrone 32 Mo 5 minutes
Invocation asynchrone 128 Ko 5 minutes

Configuration de l'envoi

Envoi par lot

L'envoi par lot regroupe plusieurs messages en une seule invocation de fonction, réduisant ainsi le nombre d'appels et améliorant le débit.

Après avoir activé l'envoi par lot, configurez les deux paramètres suivants :

Paramètre Description Plage
Batch Push Messages Nombre maximal de messages par invocation 1–10 000
Batch Push Interval Intervalle de temps entre les invocations, en secondes. Définissez cette valeur sur 0 pour une remise en temps réel. 0–15 s

Fonctionnement du traitement par lots

Un lot est envoyé dès que l'une des conditions suivantes est remplie (selon la première éventualité) :

  • Le nombre de messages accumulés atteint la valeur définie dans Batch Push Messages.

  • Le délai spécifié dans Batch Push Interval expire.

  • La taille cumulée du body atteint la limite d'invocation (32 Mo en mode synchrone, 128 Ko en mode asynchrone).

Exemples

Exemple 1 — déclenchement par intervalle : Définissez Batch Push Messages sur 100 (1 Ko chacun) et Batch Push Interval sur 15 s. Si 50 messages s'accumulent en moins de 15 s, l'envoi se déclenche immédiatement sans attendre d'atteindre 100 messages.

Exemple 2 — déclenchement par nombre de messages : Avec les mêmes paramètres, si 100 messages s'accumulent en 10 s, l'envoi se déclenche aussitôt sans attendre la fin des 15 s.

Exemple 3 — déclenchement par limite de taille du corps (invocation asynchrone) : Configurez Batch Push Messages sur 100 (2 Ko chacun), Batch Push Interval sur 15 s et Invocation Method sur Async Invocation. Lorsque 100 messages s'accumulent en 10 s, la taille totale atteint 100 × 2 Ko = 200 Ko, dépassant ainsi la limite asynchrone de 128 Ko. Function Compute divise alors automatiquement le lot : le premier contient 64 messages et le second 36 messages.

Format d'envoi

Sélectionnez le format des données d'événement remises au point d'entrée de votre fonction.

Format Description
CloudEvents Remet l'enveloppe CloudEvents complète, y compris tous les champs de métadonnées. Ce format suit la spécification CNCF CloudEvents qui standardise les données d'événements entre les services et les plateformes.
RawData Remet uniquement le champ data de l'enveloppe CloudEvents, sans aucune métadonnée.

Les exemples suivants illustrent la charge utile de l'événement pour chaque format, en utilisant un déclencheur de file d'attente Simple Message Queue (anciennement MNS) avec deux messages.

CloudEvents

[
    {
        "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"
        }
    }
]

RawData

[
    {
        "requestId": "606EA3074344430D4C81****",
        "messageId": "C6DB60D1574661357FA227277445****",
        "messageBody": "TEST"
    },
    {
        "requestId": "606EA3074344430D4C81****",
        "messageId": "C6DB60D1574661357FA227277445****",
        "messageBody": "TEST"
    }
]

Politiques de nouvelle tentative

En cas d'échec d'une requête, Function Compute effectue une nouvelle tentative conformément à la politique configurée. Deux politiques sont disponibles :

Politique Nombre de tentatives Intervalles entre les tentatives Durée totale des tentatives
Backoff Retry 3 Intervalle aléatoire entre 10 s et 20 s
Exponential Decay Retry (par défaut) 176 Commence à 1 s, double à chaque intervalle jusqu'à 512 s, puis reste fixe à 512 s (167 intervalles à 512 s) 24 heures

Déclenchement des nouvelles tentatives

Erreur Cause Comportement
HTTP 429 Function Compute a limité le débit de la requête Nouvelle tentative effectuée — la limitation est temporaire
HTTP 5xx Une erreur système Function Compute a empêché l'exécution de la fonction Nouvelle tentative effectuée

FAQ

Les erreurs logiques de la fonction déclenchent-elles la politique de nouvelle tentative ?

Cela dépend de la méthode d'invocation. Pour les invocations synchrones, les erreurs logiques déclenchent la politique de nouvelle tentative. Pour les invocations asynchrones, elles n'activent pas la politique de nouvelle tentative au niveau du déclencheur, mais plutôt la politique distincte dédiée aux invocations asynchrones. Pour plus de détails, consultez Politiques de nouvelle tentative.

Lorsqu'une nouvelle tentative résulte d'une erreur logique de la fonction, évaluez ses chances de succès :

  • Si l'erreur est transitoire, mettez en œuvre une logique de nouvelle tentative directement dans la fonction plutôt que de vous fier à la politique du déclencheur.

  • Si l'erreur est permanente, les nouvelles tentatives échoueront systématiquement et ne feront qu'augmenter les coûts. Privilégiez alors les paramètres de tolérance aux pannes et de file d'attente de lettres mortes pour gérer le message en échec.

Politiques de tolérance aux pannes

La tolérance aux pannes définit le comportement à adopter lorsqu'une requête échoue et que toutes les tentatives ont été épuisées.

Paramètre Comportement
Fault Tolerance Allowed Ignore la requête en échec et poursuit le traitement de la suivante.
Fault Tolerance Prohibited Bloque la tâche de consommation jusqu'à ce que la requête en échec réussisse.

File d'attente de lettres mortes

Une file d'attente de lettres mortes (DLQ) capture les messages non traités après épuisement de toutes les tentatives. Configurez une DLQ uniquement lorsque l'option Fault Tolerance Allowed est activée.

Configuration de la DLQ Comportement
Enabled Les messages non traités et ceux ayant dépassé la limite de tentatives sont transférés vers le service cible. Services cibles pris en charge : Simple Message Queue (anciennement MNS), ApsaraMQ for RocketMQ, ApsaraMQ for Kafka et EventBridge.
Disabled Les messages ayant dépassé la limite de tentatives sont supprimés.
Dans le cadre d'une invocation asynchrone, si une erreur survient lors de l'exécution de la fonction, l'enregistrement de l'échec n'est pas envoyé à la file d'attente de lettres mortes du déclencheur. Il est en revanche transmis à la destination d'invocation asynchrone configurée côté Function Compute. Pour plus de détails, consultez Rappels de résultat .