Gunakan pemicu ApsaraMQ for RocketMQ untuk memanggil fungsi Function Compute setiap kali sebuah message tiba di sebuah topik. Function Compute terintegrasi dengan ApsaraMQ for RocketMQ melalui EventBridge, yang menangani perutean dan pengiriman event. Topik ini akan memandu Anda dalam membuat pemicu, memahami muatan event, menulis kode fungsi, serta menguji konfigurasi tersebut.
Cara kerja
Saat Anda membuat pemicu ApsaraMQ for RocketMQ di Konsol Function Compute, Function Compute secara otomatis membuat aliran event di EventBridge berdasarkan konfigurasi pemicu Anda. Setelah pemicu aktif, message yang tiba di topik sumber akan dikirimkan ke fungsi Anda — secara individual atau dalam batch, tergantung pada konfigurasi batch Anda.
Pemicu ApsaraMQ for RocketMQ dirancang untuk skenario pemrosesan data streaming end-to-end.
Batasan
Instans ApsaraMQ for RocketMQ harus berada di Wilayah yang sama dengan fungsi Function Compute.
Jika jumlah aliran event di akun Anda mencapai batas maksimum, Anda tidak dapat membuat pemicu ApsaraMQ for RocketMQ tambahan. Untuk informasi kuota, lihat Batasan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Mengaktifkan EventBridge dan memberikan izin yang diperlukan. Lihat Aktifkan EventBridge dan berikan izin kepada RAM user.
Membuat fungsi event di Function Compute. Lihat Buat fungsi event.
Mengaktifkan ApsaraMQ for RocketMQ dan memberikan izin yang diperlukan. Lihat Aktifkan dan berikan izin pada ApsaraMQ for RocketMQ.
Membuat instans ApsaraMQ for RocketMQ, topik, dan group ID. Lihat Buat instans, topik, dan group ID.
Langkah 1: Buat pemicu
Login ke Konsol Function Compute dan buka halaman detail fungsi.
Klik tab Configurations, lalu klik Create Trigger di halaman Triggers.
Konfigurasikan parameter pemicu seperti yang dijelaskan dalam tabel berikut, lalu klik OK.

| Parameter | Deskripsi | Contoh |
|---|---|---|
| Consumer offset | Offset tempat ApsaraMQ for RocketMQ mulai menarik message. Nilai yang valid: Latest Offset (mulai dari message terbaru), Earliest Offset (mulai dari message tertua yang tersedia), Timestamp (mulai dari titik waktu tertentu). | Latest Offset |
| Invocation method | Cara fungsi dipanggil saat event tiba. Sync Invocation: Function Compute menjalankan fungsi dan menunggu respons sebelum memproses event atau batch berikutnya. Muatan maksimum: 32 MB. Lihat Synchronous invocation. Async Invocation: Function Compute langsung melanjutkan ke event berikutnya tanpa menunggu fungsi selesai. Muatan maksimum: 128 KB. Lihat Asynchronous invocation. | Sync Invocation |
Untuk pengaturan lanjutan seperti konfigurasi push, kebijakan retry, dan dead-letter queues, lihat Fitur lanjutan pemicu.
Langkah 2: (Opsional) Konfigurasikan parameter uji
ApsaraMQ for RocketMQ mengirimkan message ke fungsi Anda sebagai array event. Sebelum mengirim message sungguhan, simulasi event pemicu untuk memverifikasi kode fungsi Anda.
Di tab Code pada halaman detail fungsi, klik ikon
di samping Test Function dan pilih Configure Test Parameters.Di panel Configure Test Parameters, klik Create New Test Event atau Modify Existing Test Event, masukkan nama dan konten event, lalu klik OK.
Berikut adalah contoh muatan event yang berisi dua message:
[
{
"id": "94ebc15f-f0db-4bbe-acce-56fb72fb****",
"source": "RocketMQ-Function-rocketmq-trigger",
"specversion": "1.0",
"type": "mq:Topic:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName",
"time": "2021-04-08T06:01:20.766Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T02:05:16.791Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RocketMQ-Function-rocketmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"topic": "TopicName",
"systemProperties": {
"MIN_OFFSET": "0",
"TRACE_ON": "true",
"MAX_OFFSET": "8",
"MSG_REGION": "cn-hangzhou",
"KEYS": "systemProperties.KEYS",
"CONSUME_START_TIME": 1628577790396,
"TAGS": "systemProperties.TAGS",
"INSTANCE_ID": "MQ_INST_164901546557****_BXhFHryi"
},
"userProperties": {},
"body": "TEST"
}
},
{
"id": "94ebc15f-f0db-4bbe-acce-56fb72fb****",
"source": "RocketMQ-Function-rocketmq-trigger",
"specversion": "1.0",
"type": "mq:Topic:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName",
"time": "2021-04-08T06:01:20.766Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T02:05:16.791Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RocketMQ-Function-rocketmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"topic": "TopicName",
"systemProperties": {
"MIN_OFFSET": "0",
"TRACE_ON": "true",
"MAX_OFFSET": "8",
"MSG_REGION": "cn-hangzhou",
"KEYS": "systemProperties.KEYS",
"CONSUME_START_TIME": 1628577790396,
"TAGS": "systemProperties.TAGS",
"INSTANCE_ID": "MQ_INST_164901546557****_BXhFHryi"
},
"userProperties": {},
"body": "TEST"
}
}
]Setiap elemen dalam array merupakan message berformat CloudEvents. Bidang tingkat atas (id, source, specversion, dan seterusnya) mengikuti spesifikasi CloudEvents. Untuk detailnya, lihat Ikhtisar. Objek data berisi konten message RocketMQ:
| Bidang | Tipe | Contoh | Deskripsi |
|---|---|---|---|
topic | String | TopicName | Nama topik. |
systemProperties | Map | Properti message tingkat sistem RocketMQ. | |
systemProperties.MIN_OFFSET | Int | 0 | Offset paling awal dalam antrian. |
systemProperties.TRACE_ON | Boolean | true | Apakah jejak message tersedia. |
systemProperties.MAX_OFFSET | Int | 8 | Offset terbaru dalam antrian. |
systemProperties.MSG_REGION | String | cn-hangzhou | Wilayah tempat message dikirim. |
systemProperties.KEYS | String | systemProperties.KEYS | Kunci yang digunakan untuk memfilter message. |
systemProperties.CONSUME_START_TIME | Long | 1628577790396 | Waktu mulai konsumsi message, dalam milidetik. |
systemProperties.UNIQ_KEY | String | AC14C305069E1B28CDFA3181CDA2**** | Kunci unik dari message. |
systemProperties.TAGS | String | systemProperties.TAGS | Tag yang digunakan untuk memfilter message. |
systemProperties.INSTANCE_ID | String | MQ_INST_123456789098****_BXhFHryi | ID instans ApsaraMQ for RocketMQ. |
userProperties | Map | Properti pengguna. | |
body | String | TEST | Isi message. |
Langkah 3: Tulis dan uji fungsi Anda
Setelah pemicu dibuat, tulis kode fungsi Anda dan uji.
Tulis kode fungsi
Di tab Code pada halaman detail fungsi, tulis kode penanganan Anda dan klik Deploy Code.
Contoh Node.js berikut menunjukkan cara menangani event:
'use strict';
exports.handler = (event, context, callback) => {
console.log("event: %s", event);
// Parse the event parameters and process the event.
callback(null, 'return result');
}Uji fungsi
Dua metode tersedia:
Metode 1: Simulasikan dengan parameter uji
Jika Anda telah mengonfigurasi event uji di Langkah 2, klik Test Function di tab Code.
Metode 2: Mengirim pesan sungguhan
Login ke Konsol ApsaraMQ for RocketMQ, pilih topik yang telah Anda buat, lalu klik Send Message.

Setelah fungsi dijalankan, lihat output di Real-time Logs.

Langkah selanjutnya
Untuk mengubah atau menghapus pemicu ini, lihat Manage triggers.
Untuk melihat aliran event yang dibuat oleh pemicu ini, login ke Konsol EventBridge. Lihat Ikhtisar.