All Products
Search
Document Center

Function Compute:Fitur Pemicu Advanced

Last Updated:Apr 02, 2026

Pemicu sumber event kustom di Function Compute mendukung pengaturan tingkat lanjut untuk pengiriman, keandalan, dan throughput. Konfigurasikan pengaturan ini untuk mengontrol cara pesan dibatch, diformat, dicoba ulang, dan didistribusikan di antara konsumen konkuren.

Fitur-fitur ini berlaku untuk jenis pemicu berikut:

Metode pemanggilan

Pemicu Function Compute mendukung pemanggilan sinkron dan asinkron. Kedua mode memiliki batas ukuran body dan periode timeout yang berbeda.

Invocation modeUkuran maksimum bodyPeriode timeout maksimum
Pemanggilan sinkron32 MB5 menit
Pemanggilan asinkron128 KB5 menit

Konfigurasi push

Batch push

Batch push menggabungkan beberapa pesan menjadi satu pemanggilan fungsi. Aktifkan fitur ini dengan mengonfigurasi parameter berikut:

ParameterNilai validBawaanDeskripsi
Batch Push Messages1–10000Jumlah maksimum pesan per pemanggilan.
Batch Push Interval0–15 detikWaktu tunggu maksimum sebelum mem-flush batch. Atur ke 0 untuk mengirim pesan secara real time.

Sebuah batch akan di-flush ketika salah satu kondisi berikut terpenuhi lebih dulu:

  • Jumlah pesan dalam antrian mencapai batas Batch Push Messages.

  • Waktu yang berlalu mencapai batas Batch Push Interval.

  • Ukuran muatan agregat mencapai batas ukuran body untuk metode pemanggilan yang dikonfigurasi (32 MB untuk pemanggilan sinkron, 128 KB untuk pemanggilan asinkron).

Contoh

Contoh 1 — Kondisi jumlah terpenuhi lebih dulu

Batch Push Messages = 100, Batch Push Interval = 15 dtk, ukuran pesan = 1 KB. 100 pesan terkumpul dalam 10 detik. Batch langsung di-flush saat mencapai 100 pesan tanpa menunggu interval 15 detik.

Contoh 2 — Kondisi interval terpenuhi lebih dulu

Batch Push Messages = 100, Batch Push Interval = 15 dtk, ukuran pesan = 1 KB. Hanya 50 pesan yang terkumpul hingga tanda 15 detik. Batch langsung di-flush pada detik ke-15 tanpa menunggu hingga mencapai 100 pesan.

Contoh 3 — Batas ukuran muatan terpenuhi lebih dulu (pemanggilan asinkron)

Batch Push Messages = 100, Batch Push Interval = 15 dtk, ukuran pesan = 2 KB, metode pemanggilan = asinkron. 100 pesan terkumpul dalam 10 detik, total 200 KB — melebihi batas body asinkron sebesar 128 KB. Batch tersebut dipisah dan di-flush dalam dua batch: 64 pesan di batch pertama dan 36 pesan di batch kedua.

Format push

Format push menentukan struktur parameter event yang diterima fungsi Anda.

FormatDeskripsi
CloudEventsPesan dikirim dalam format spesifikasi CloudEvents, termasuk semua bidang metadata event.
RawDataHanya konten bidang data dari envelope CloudEvents yang dikirimkan. Bidang metadata dihilangkan.

Contoh berikut menunjukkan struktur event untuk masing-masing format, menggunakan pemicu antrian Simple Message Queue (formerly MNS).

Pemanggilan pesan tunggal

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"
    }
}

RawData

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

Pemanggilan batch (mode aliran event)

Dalam mode aliran event, kedua format mengirimkan array pesan. Setiap elemen dalam array memiliki struktur yang sama seperti format pesan tunggal yang ditunjukkan di atas.

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

Kebijakan retry

Function Compute mencoba ulang pemanggilan yang gagal sesuai dengan kebijakan retry yang dikonfigurasi. Tersedia dua kebijakan:

KebijakanRetry maksimumInterval retryDurasi total retry
Backoff Retry310–20 dtk (acak)
Exponential Decay Retry (bawaan)1761 dtk, 2 dtk, 4 dtk, 8 dtk, 16 dtk, 32 dtk, 64 dtk, 128 dtk, 256 dtk, 512 dtk (512 dtk untuk 167 retry sisanya)24 jam

Retry dipicu untuk jenis error berikut:

Jenis errorKondisi pemicuRetry Behavior
429 (throttling)Function Compute sementara melakukan throttling terhadap permintaan.Dicoba ulang secara otomatis sesuai kebijakan yang dikonfigurasi.
5xx (error sistem)Terjadi error tingkat sistem di Function Compute.Dicoba ulang secara otomatis sesuai kebijakan yang dikonfigurasi.
Error eksekusi fungsiFungsi mengembalikan error karena masalah dalam implementasi fungsi.Dicoba ulang secara otomatis sesuai kebijakan yang dikonfigurasi.

Kebijakan toleransi kesalahan

Kebijakan toleransi kesalahan menentukan apa yang terjadi ketika suatu permintaan telah menghabiskan semua upaya retry.

KebijakanPerilaku
Fault Tolerance AllowedMelewati permintaan yang gagal dan melanjutkan pemrosesan pesan berikutnya.
Fault Tolerance ProhibitedMemblokir konsumsi hingga permintaan yang gagal berhasil. Tidak ada pesan berikutnya yang diproses.

Antrian dead-letter

Antrian dead-letter (DLQ) menangkap pesan yang tidak dapat diproses setelah semua upaya retry habis.

Konfigurasi antrian dead-letter hanya tersedia ketika Fault Tolerance Allowed diaktifkan.
Pengaturan DLQPerilaku
EnabledPesan yang tidak diproses dan pesan yang melebihi jumlah retry maksimum diteruskan ke layanan tujuan. Tujuan yang didukung: Simple Message Queue (formerly MNS), ApsaraMQ for RocketMQ, ApsaraMQ for Kafka, dan EventBridge.
DisabledPesan yang melebihi jumlah retry maksimum dibuang.

Konsumsi konkuren

Konsumsi konkuren meningkatkan throughput pesan dengan memproses beberapa partisi topik secara paralel. Parameter Concurrency Quota hanya dapat dikonfigurasi untuk pemicu ApsaraMQ for Kafka, dan harus digunakan bersamaan dengan partisi topik Kafka.

Hubungan antara partisi topik dan thread konkuren menentukan throughput efektif:

SkenarioPerilaku
Partisi topik = Thread konkurenSetiap thread memproses satu partisi. Semua thread aktif.
Partisi topik > Thread konkurenThread didistribusikan merata di seluruh partisi. Semua thread aktif.
Partisi topik < Thread konkurenSatu thread mengonsumsi satu partisi topik. Thread konsumsi tambahan tidak berlaku.

Atur Concurrency Quota sama dengan atau kurang dari jumlah partisi topik agar seluruh thread konkuren dapat dimanfaatkan secara optimal.