Pemicu ApsaraMQ for Kafka memanggil fungsi Function Compute ketika pesan dipublikasikan ke topik Kafka, sehingga memungkinkan pemrosesan berbasis event tanpa polling.
Cara kerja
ApsaraMQ for Kafka terintegrasi dengan Function Compute melalui EventBridge. Saat Anda membuat pemicu di Konsol Function Compute, FC secara otomatis membuat event streams di EventBridge berdasarkan konfigurasi pemicu tersebut.
Saat aktif, pemicu memantau topik yang ditentukan. Ketika sebuah pesan dipublikasikan ke ApsaraMQ for Kafka, EventBridge mengirimkan satu atau beberapa pesan dalam satu batch ke fungsi terkait sesuai dengan pengaturan batch Anda.
Batasan
Instans ApsaraMQ for Kafka harus berada di wilayah yang sama dengan fungsi tersebut.
Jika jumlah event streams mencapai batas maksimum, tidak ada pemicu Kafka tambahan yang dapat dibuat. Untuk informasi lebih lanjut mengenai batas tersebut, lihat Batasan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
EventBridge: Mengaktifkan EventBridge dan memberikan izin kepada RAM user
Function Compute: Fungsi event
ApsaraMQ for Kafka: Sebuah instans yang telah dideploy dan sebuah topik dan kelompok konsumen
Langkah 1: Buat pemicu
Masuk ke Konsol Function Compute dan buka fungsi target.
Pada tab Configurations, buka halaman Triggers, lalu klik Create Trigger.
Konfigurasikan parameter pemicu seperti yang dijelaskan dalam tabel berikut, lalu klik OK.

| Parameter | Wajib | Deskripsi | Contoh |
|---|---|---|---|
| Consumer offset | Ya | Titik awal EventBridge menarik pesan. Earliest Offset: mulai dari pesan tertua yang tersedia. Latest Offset: hanya mulai dari pesan baru. | Earliest Offset |
| Invocation method | Ya | Cara fungsi dipanggil saat event atau batch event dikirimkan. Sync Invocation: menunggu respons sebelum memproses batch berikutnya; batas muatan adalah 32 MB. Lihat Synchronous invocation. Async Invocation: langsung mengembalikan hasil dan melanjutkan ke batch berikutnya; batas muatan adalah 128 KB. Lihat Asynchronous invocation. | Sync Invocation |
| Max. Delivery Concurrency | Tidak | Jumlah maksimum pesan Kafka yang dikirimkan ke Function Compute secara konkuren. Nilai yang valid: 1–300. Hanya tersedia untuk Sync Invocation. Untuk menaikkan batas ini, buka Quota Center of EventBridge, cari EventStreaming FC Sink Maximum Concurrent Number of Synchronous Posting, lalu klik Apply. | 1 |
Untuk pengaturan lanjutan seperti push settings, kebijakan retry, dan dead-letter queues, lihat Advanced features of triggers.
Langkah 2: (Opsional) Konfigurasi parameter uji coba
Pemicu meneruskan pesan Kafka ke fungsi sebagai parameter event. Untuk menguji fungsi tanpa mempublikasikan pesan sungguhan, konfigurasikan secara manual event uji coba yang mensimulasikan muatan pemicu.
Catatan: Simulasi uji coba berguna untuk memvalidasi logika parsing Anda, tetapi tidak menguji seluruh pipeline pemicu. Untuk memverifikasi perilaku end-to-end, gunakan pesan Kafka aktual seperti yang dijelaskan pada Langkah 3.
Pada tab Code, klik ikon
di samping Test Function, lalu pilih Configure Test Parameters.Pada panel Configure Test Parameters, klik Create New Test Event atau Modify Existing Test Event, masukkan nama dan konten event, lalu klik OK.
Contoh berikut menunjukkan struktur event untuk dua pesan dalam satu batch:
[
{
"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"
}
}
]Objek data berisi bidang-bidang spesifik Kafka:
| Bidang | Tipe | Contoh | Deskripsi |
|---|---|---|---|
topic | String | TopicName | Nama topik. |
partition | Int | 1 | Nomor partisi tempat pesan dikonsumsi. |
offset | Int | 0 | Offset pesan dalam partisi tersebut. |
timestamp | String | 1655952591589 | Timestamp Unix (dalam milidetik) yang menunjukkan kapan konsumsi pesan dimulai. |
Untuk bidang envelope CloudEvents (specversion, id, source, type, dll.), lihat Event overview.
Langkah 3: Tulis dan uji kode fungsi
Pada tab Code, tulis kode fungsi Anda di editor, lalu klik Deploy. Contoh berikut menunjukkan penanganan fungsi dalam Node.js:
'use strict'; /* Untuk mengaktifkan fitur initializer, implementasikan fungsi inisialisasi seperti di bawah ini: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Lakukan parsing parameter event dan proses event tersebut. callback(null, 'return result'); }Uji fungsi menggunakan salah satu metode berikut:
Uji simulasi: Klik Test Function untuk menggunakan event uji coba yang dikonfigurasi pada Langkah 2. Metode ini berguna untuk memvalidasi logika parsing Anda tanpa koneksi Kafka langsung.
Uji end-to-end: Masuk ke Konsol ApsaraMQ for Kafka, pilih topik, lalu klik Send Message untuk mempublikasikan pesan sungguhan. Pemicu akan mendeteksi pesan tersebut dan secara otomatis memanggil fungsi.

Setelah eksekusi, lihat output di Real-time Logs.

Lanjutan
Untuk memodifikasi atau menghapus pemicu yang sudah ada, lihat Manage triggers.