Pemicu ApsaraMQ for RabbitMQ memungkinkan Anda menjalankan fungsi Function Compute setiap kali pesan masuk ke antrian RabbitMQ. Integrasi ini mengarahkan pesan melalui EventBridge, sehingga Anda dapat memprosesnya satu per satu atau dalam batch tanpa perlu mengelola infrastruktur polling.
Cara kerja
Saat Anda membuat pemicu ApsaraMQ for RabbitMQ di Konsol Function Compute, Function Compute secara otomatis membuat aliran event di EventBridge. Ketika sebuah pesan dimasukkan ke instans RabbitMQ sumber, EventBridge mengirimkannya ke fungsi Anda sebagai event berformat CloudEvents. Pesan didorong ke fungsi Anda satu per satu atau dalam batch, tergantung pada konfigurasi batch yang Anda tetapkan.
Anda dapat melihat pemicu tersebut di Konsol Function Compute dan sumber daya aliran event terkait di Konsol EventBridge.
Pemicu ApsaraMQ for RabbitMQ cocok untuk skenario pemrosesan data streaming end-to-end.
Batasan
Instans ApsaraMQ for RabbitMQ dan fungsi Function Compute harus berada di Wilayah yang sama.
Jika jumlah aliran event di akun Anda mencapai Kuota, Anda tidak dapat membuat pemicu tambahan. Untuk detail 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
Memiliki fungsi event di Function Compute — lihat Buat fungsi event
Memiliki instans ApsaraMQ for RabbitMQ aktif dengan vhost dan queue yang telah dikonfigurasi:
Langkah 1: Buat pemicu
Masuk ke Konsol Function Compute dan buka halaman detail fungsi.
Klik tab Configurations, lalu klik Create Trigger di halaman Triggers.
Konfigurasikan parameter pemicu. Gambar berikut menunjukkan panel konfigurasi.

Klik OK.
Metode pemanggilan
Pilih cara Function Compute memanggil fungsi Anda saat pesan tiba:
| Method | Max payload | Behavior | When to use |
|---|---|---|---|
| Sync Invocation | 32 MB | Memproses satu event atau batch dalam satu waktu; menunggu fungsi mengembalikan respons sebelum memproses berikutnya | Pemrosesan berurutan di mana urutan penting |
| Async Invocation | 128 KB | Mengembalikan respons segera dan melanjutkan ke event atau batch berikutnya; fungsi berjalan di latar belakang | Skenario throughput tinggi di mana kecepatan konsumsi lebih penting daripada pemrosesan berurutan |
Untuk detail selengkapnya, lihat Synchronous invocation dan Asynchronous invocation.
Untuk pengaturan lanjutan seperti push settings, kebijakan retry, dan dead-letter queues, lihat Advanced features of triggers.
Setelah dibuat, pemicu akan muncul di tab Triggers. Untuk mengubah atau menghapusnya, lihat Trigger management.
Langkah 2: (Opsional) Konfigurasikan parameter pengujian
ApsaraMQ for RabbitMQ meneruskan pesan ke fungsi Anda sebagai array event. Untuk menguji kode fungsi Anda tanpa mengirim pesan sungguhan, simulasi event secara manual:
Di tab Code, 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 event dan konten event di bawah ini, lalu klik OK.
Berikut adalah contoh muatan event yang berisi dua pesan:
[
{
"id": "bj694332-4cj1-389e-9d8c-b137h30b****",
"source": "RabbitMQ-Function-rabbitmq-trigger",
"specversion": "1.0",
"type": "amqp:Queue:SendMessage",
"datacontenttype": "application/json;charset=utf-8",
"subject": "acs:amqp:cn-hangzhou:164901546557****:/instances/amqp-cn-tl32e756****/vhosts/eb-connect/queues/housekeeping",
"time": "2021-08-12T06:56:40.709Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T08:58:55.140Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RabbitMQ-Function-rabbitmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"envelope": {
"deliveryTag": 98,
"exchange": "",
"redeliver": false,
"routingKey": "housekeeping"
},
"body": {
"Hello": "RabbitMQ"
},
"props": {
"contentEncoding": "UTF-8",
"messageId": "f7622d51-e198-41de-a072-77c1ead7****"
}
}
},
{
"id": "bj694332-4cj1-389e-9d8c-b137h30b****",
"source": "RabbitMQ-Function-rabbitmq-trigger",
"specversion": "1.0",
"type": "amqp:Queue:SendMessage",
"datacontenttype": "application/json;charset=utf-8",
"subject": "acs:amqp:cn-hangzhou:164901546557****:/instances/amqp-cn-tl32e756****/vhosts/eb-connect/queues/housekeeping",
"time": "2021-08-12T06:56:40.709Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T08:58:55.140Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RabbitMQ-Function-rabbitmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"envelope": {
"deliveryTag": 98,
"exchange": "",
"redeliver": false,
"routingKey": "housekeeping"
},
"body": {
"Hello": "RabbitMQ"
},
"props": {
"contentEncoding": "UTF-8",
"messageId": "f7622d51-e198-41de-a072-77c1ead7****"
}
}
}
]Array luar berisi satu objek untuk setiap pesan dalam batch. Bidang tingkat atas mengikuti spesifikasi CloudEvents. Bidang data membawa konten spesifik RabbitMQ:
Parameter bidang `data`
| Parameter | Type | Example | Description |
|---|---|---|---|
body | Map | Isi message yang berisi konten yang ditentukan pengguna | |
Hello | String | EventBridge | Data pengguna di dalam isi message |
props | Map | Atribut message | |
contentEncoding | String | utf-8 | Encoding dari isi message |
messageId | String | f7622d51-e198-41de-a072-77c1ead7**** | ID message unik |
envelope | Map | Metadata envelope AMQP | |
deliveryTag | Int | 98 | Tag pengiriman yang ditetapkan oleh broker |
exchange | String | | Nama exchange yang mengirim message |
redeliver | Boolean | false | Menentukan apakah message dapat dikirim ulang. Nilai yang valid: true atau false |
routingKey | String | housekeeping | Routing key yang digunakan untuk mengirimkan message ke queue |
Langkah 3: Tulis dan uji kode fungsi
Tulis kode di editor untuk mengurai dan memproses array event yang diterima fungsi Anda. Deploy kode tersebut, lalu uji menggunakan salah satu dari dua metode berikut.
Di tab Code, tulis kode fungsi Anda dan klik Deploy Code. Contoh berikut dalam Node.js mencatat event mentah dan mengembalikan hasil:
'use strict'; /* Untuk mengaktifkan fitur initializer harap 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); // Urai parameter event dan proses event tersebut. callback(null, 'return result'); }Uji fungsi menggunakan salah satu metode berikut:
Event simulasi: Klik Test Function untuk menjalankan dengan parameter pengujian yang Anda konfigurasi di Langkah 2.
Pesan sungguhan: Masuk ke Konsol ApsaraMQ for RabbitMQ, pilih queue Anda, lalu klik Send Message untuk menerbitkan pesan. Pemicu akan aktif secara otomatis.

Setelah eksekusi, periksa hasilnya di Real-time Logs.

Langkah berikutnya
Untuk mengubah atau menghapus pemicu yang sudah ada, lihat Manage triggers.
Untuk pengaturan pemicu lanjutan termasuk konfigurasi push, kebijakan retry, dan dead-letter queues, lihat Advanced features of triggers.