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 selengkapnya mengenai batasan 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 serta sebuah topik dan kelompok konsumen
Langkah 1: Membuat 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 paling lama 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 pengujian
Pemicu meneruskan pesan Kafka ke fungsi sebagai parameter event. Untuk menguji fungsi tanpa mempublikasikan pesan nyata, konfigurasikan secara manual event pengujian yang mensimulasikan muatan pemicu.
Note: Simulasi pengujian ini berguna untuk memvalidasi logika penguraian 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:
| Field | Type | 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 (ms) yang menunjukkan kapan konsumsi pesan dimulai. |
Untuk bidang envelope CloudEvents (specversion, id, source, type, dll.), lihat Event overview.
Langkah 3: Menulis dan menguji 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); // Uraikan parameter event dan proses event tersebut. callback(null, 'return result'); } -
Uji fungsi menggunakan salah satu metode berikut:
-
Simulated test: Klik Test Function untuk menggunakan event pengujian yang dikonfigurasi pada Langkah 2. Ini berguna untuk memvalidasi logika penguraian Anda tanpa koneksi Kafka langsung.
-
End-to-end test: Masuk ke Konsol ApsaraMQ for Kafka, pilih topik, lalu klik Send Message untuk mempublikasikan pesan nyata. Pemicu akan mendeteksi pesan tersebut dan secara otomatis memanggil fungsi.

-
-
Setelah eksekusi, lihat output di Real-time Logs.

Langkah selanjutnya
Untuk mengubah atau menghapus pemicu yang sudah ada, lihat Manage triggers.