Setelah sumber peristiwa ApsaraMQ for RabbitMQ diintegrasikan dengan Function Compute menggunakan EventBridge, pemicu ApsaraMQ for RabbitMQ (RabbitMQ trigger) dapat memicu fungsi terkait. Fungsi-fungsi tersebut dapat digunakan untuk melakukan operasi kustom pada pesan-pesan yang diterbitkan ke ApsaraMQ for RabbitMQ. Topik ini menjelaskan cara membuat pemicu RabbitMQ, mengonfigurasi parameter input fungsi, serta menulis dan menguji kode di konsol Function Compute.
Ikhtisar
- Mode peristiwa
- Mode aliran peristiwa
- Mode peristiwa: Pesan tunggal dilewatkan ke fungsi sebagai parameter peristiwa. Peristiwa tersebut mengikuti spesifikasi CloudEvents. Untuk informasi tentang hubungan antara konten pesan dan CloudEvents, lihat Langkah 2: Konfigurasikan parameter input fungsi.
- Mode aliran peristiwa: Satu atau lebih pesan didorong ke Function Compute untuk pemrosesan batch berdasarkan konfigurasi batch Anda. Model ini cocok untuk skenario di mana data streaming ujung ke ujung diproses.
Catatan penggunaan
- Instance ApsaraMQ for RabbitMQ yang menjadi sumber pemicu harus berada di wilayah yang sama dengan fungsi di Function Compute.
- Jika jumlah bus peristiwa kustom yang dibuat dan jumlah aturan peristiwa yang dibuat mencapai batas atas, Anda tidak dapat membuat pemicu Antrian Pesan untuk RabbitMQ dalam mode peristiwa.
- Jika jumlah aliran peristiwa yang dibuat mencapai batas atas, Anda tidak dapat membuat pemicu Antrian Pesan untuk RabbitMQ dalam mode aliran peristiwa.
Untuk informasi tentang batasan jumlah sumber daya yang dapat dibuat menggunakan akun Alibaba Cloud di setiap wilayah, lihat Batasan.
Sebelum memulai
- EventBridge
- Function Compute
- ApsaraMQ for RabbitMQ
Langkah 1: Buat pemicu
Masuk ke konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
- Pada halaman Functions, klik fungsi yang ingin Anda kelola.
- Pada halaman detail fungsi, klik tab Triggers, pilih versi atau alias dari daftar drop-down Version or Alias, lalu klik Create Trigger.
- Di panel Buat Pemicu, tentukan parameter terkait. Setelah menentukan parameter, klik OK.Tabel berikut menjelaskan parameter dasar.
Parameter Deskripsi Contoh Trigger Type Pilih Message Queue for RabbitMQ dari daftar drop-down. Antrian Pesan untuk RabbitMQ Name Masukkan nama pemicu kustom. rabbitmq-trigger Version or Alias Nilai default adalah LATEST. Jika Anda ingin membuat pemicu untuk versi atau alias lain, beralihlah ke versi atau alias tertentu di pojok kanan atas halaman detail fungsi. Untuk informasi lebih lanjut tentang versi dan alias layanan, lihat Kelola versi dan Kelola alias. LATEST RabbitMQ Instance Pilih instance ApsaraMQ for RabbitMQ. amqp-cn-i7m2l6m2**** Vhost Pilih vhost dari instance ApsaraMQ for RabbitMQ dari daftar drop-down. myhost-1 Queue Pilih antrian dari instance ApsaraMQ for RabbitMQ dari daftar drop-down. myqueue-1 Invocation Method Pilih mode pemanggilan fungsi. Nilai valid:- Sync Invocation: Mode ini cocok untuk pemanggilan berurutan. Saat satu peristiwa atau sekelompok peristiwa memicu fungsi, Function Compute menjalankan fungsi dan menunggu respons sebelum memproses peristiwa atau kelompok peristiwa berikutnya. Batas maksimum payload untuk permintaan pemanggilan sinkron adalah 32 MB. Untuk informasi lebih lanjut, lihat Pemanggilan sinkron.
- Async Invocation: Mode ini memungkinkan Anda untuk dengan cepat mengonsumsi peristiwa. Saat satu peristiwa atau sekelompok peristiwa memicu fungsi, Function Compute segera mengembalikan respons dan melanjutkan untuk memproses peristiwa atau kelompok peristiwa berikutnya. Selama proses ini, fungsi dijalankan dalam mode asinkron. Batas maksimum payload untuk permintaan pemanggilan asinkron adalah 128 KB. Untuk informasi lebih lanjut, lihat Ikhtisar.
Pemanggilan Sinkron Message Push Mode Mode aplikasi dasar yang digunakan untuk mendorong data pesan ke Function Compute. Nilai valid:- Event Mode: Pesan tunggal dilewatkan ke fungsi sebagai parameter peristiwa. Peristiwa tersebut mengikuti spesifikasi CloudEvents. Untuk informasi tentang hubungan antara konten pesan dan CloudEvents, lihat Parameter.
- Event Stream Mode: Satu atau lebih pesan didorong ke Function Compute untuk pemrosesan batch berdasarkan konfigurasi batch Anda. Model ini cocok untuk skenario di mana data streaming ujung ke ujung diproses.
Mode Peristiwa Trigger State Menentukan apakah akan mengaktifkan pemicu segera setelah dibuat. Secara default, Enable Trigger dipilih dan pemicu diaktifkan setelah dibuat. Tidak tersedia Untuk informasi lebih lanjut tentang konfigurasi lanjutan seperti dorongan pesan, percobaan ulang, dan konfigurasi surat mati, lihat Fitur lanjutan pemicu.
Setelah pemicu dibuat, pemicu tersebut ditampilkan di tab Triggers. Untuk memodifikasi atau menghapus pemicu yang ada, lihat Kelola pemicu.
Langkah 2: Konfigurasikan parameter input fungsi
Sumber peristiwa ApsaraMQ for RabbitMQ dilewatkan ke fungsi dalam bentuk event, yang bertindak sebagai parameter input. Anda juga dapat secara manual melewatkan event ke fungsi untuk memicu fungsi dan menguji apakah kode fungsi benar.
- Pada halaman detail fungsi, klik tab Code dan klik ikon
. Dari daftar drop-down yang muncul, pilih Configure Test Parameters. - Di panel Configure Test Parameters, klik tab Create New Test Event atau Modify Existing Test Event, dan tentukan Event Name dan isi acara. Setelah menentukan parameter, klik OK.Kode contoh
eventdalam mode peristiwa:{ "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****" } } }Kode contoheventdalam mode aliran peristiwa:[ { "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****" } } } ]Tabel berikut menjelaskan parameter dalam data. Untuk informasi tentang parameter yang didefinisikan dalam spesifikasi CloudEvents, lihat Ikhtisar.Parameter
Tipe
Contoh
Deskripsi
body
Map
Tubuh pesan.
Hello
String
EventBridge
Data pengguna.
props
Map
Atribut pesan.
contentEncoding
String
utf-8
Format pengkodean tubuh pesan.
messageId
String
f7622d51-e198-41de-a072-77c1ead7****
ID pesan. Setiap ID pesan bersifat unik.
envelope
Map
Informasi tentang amplop pesan.
deliveryTag
Int
98
Tag pesan.
exchange
String
Tidak ada
Nama pertukaran yang mengirim pesan.
redeliver
Boolean
false
Menentukan apakah pesan dapat dikirim ulang. Nilai valid:
true
false
routingKey
String
housekeeping
Aturan routing pesan.
Langkah 3: Tulis dan uji fungsi
Setelah Anda membuat pemicu, Anda dapat menulis kode fungsi dan menguji fungsi untuk memverifikasi bahwa kode tersebut benar. Saat peristiwa ApsaraMQ for RabbitMQ dikirimkan ke Function Compute menggunakan EventBridge, pemicu memicu eksekusi fungsi.
- Pada halaman detail fungsi, klik tab Code, edit kode fungsi di editor kode, lalu klik Deploy.Topik ini menggunakan contoh kode fungsi Node.js.
'use strict'; /* Untuk mengaktifkan fitur inisialisasi silakan implementasikan fungsi inisialisasi sebagai berikut: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parsing parameter peristiwa dan memproses peristiwa. callback(null, 'hasil kembali'); } - Klik tab Code dan klik Test Function. Setelah fungsi dieksekusi, Anda dapat melihat hasilnya di tab Kode.
Referensi
Untuk memodifikasi atau menghapus pemicu yang ada, lihat Kelola pemicu.