Pemicu antrian Simple Message Queue (formerly MNS) memungkinkan Anda menjalankan fungsi Function Compute secara otomatis setiap kali ada pesan yang masuk ke dalam antrian. Pemicu ini didukung oleh EventBridge: saat Anda membuat pemicu di Konsol Function Compute, Function Compute akan membuat aliran event yang diperlukan di EventBridge atas nama Anda. Untuk detail mengenai aliran event, lihat Ikhtisar.
Saat pemicu aktif, setiap pesan yang dimasukkan ke dalam antrian sumber akan menyebabkan fungsi terkait dieksekusi. Pesan dikirimkan satu per satu atau dalam batch, tergantung pada konfigurasi batch Anda. Pola ini cocok untuk pemrosesan data streaming end-to-end.
Batasan
-
Antrian Simple Message Queue (formerly MNS) dan fungsi Function Compute harus berada di Wilayah yang sama.
-
Jika akun Alibaba Cloud Anda mencapai batas aliran event EventBridge, Anda tidak dapat membuat pemicu antrian Simple Message Queue (formerly MNS) tambahan. Untuk informasi batas terkini, lihat Batasan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Mengaktifkan EventBridge dan memberikan izin: Aktifkan EventBridge dan berikan izin kepada RAM user
-
Memiliki fungsi event Function Compute: Buat fungsi event
-
Mengaktifkan Simple Message Queue (formerly MNS) dan memberikan akses kepada RAM user: Aktifkan SMQ dan otorisasi RAM user untuk mengakses SMQ
-
Membuat antrian di Simple Message Queue (formerly MNS): Buat antrian
Langkah 1: Buat pemicu
-
Masuk ke Konsol Function Compute dan klik fungsi yang ingin Anda gunakan.
-
Pada halaman detail fungsi, klik tab Configurations, lalu buka Triggers dan klik Create Trigger.
-
Isi pengaturan pemicu. Bidang utama adalah Invocation Method. Untuk detailnya, lihat Synchronous invocation dan Asynchronous invocation.
Invocation method Behavior Max payload When to use Sync Invocation Function Compute menunggu fungsi mengembalikan respons sebelum mengirimkan event atau batch berikutnya 32 MB Pemrosesan berurutan atau berbasis urutan penting Async Invocation Function Compute mengirimkan event dan langsung melanjutkan ke event berikutnya; fungsi berjalan di latar belakang 128 KB Skenario throughput tinggi di mana Anda ingin mengonsumsi event dengan cepat -
Klik OK.
Untuk pengaturan lanjutan seperti push settings, kebijakan retry, dan dead-letter queues, lihat Fitur lanjutan pemicu.
Setelah pemicu dibuat, pemicu tersebut akan muncul di tab Triggers. Untuk mengubah atau menghapusnya, lihat Kelola pemicu.
Langkah 2: (Opsional) Konfigurasikan parameter pengujian
Fungsi menerima event Simple Message Queue (formerly MNS) sebagai parameter event — sebuah array objek berformat CloudEvents. Untuk menguji kode fungsi tanpa mengirim pesan sungguhan, simulasi event tersebut secara manual.
-
Pada tab Code, klik ikon
di samping Test Function dan pilih Configure Test Parameters. -
Pada 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.
Contoh muatan event:
[
{
"id": "c2g71017-6f65-fhcf-a814-a396fc8d****",
"source": "MNS-Function-mnstrigger",
"specversion": "1.0",
"type": "mns:Queue:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mns:cn-hangzhou:164901546557****:queues/zeus",
"time": "2021-04-08T06:28:17.093Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T07:06:34.028Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "MNS-Function-mnstrigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
},
{
"id": "d2g71017-6f65-fhcf-a814-a396fc8d****",
"source": "MNS-Function-mnstrigger",
"specversion": "1.0",
"type": "mns:Queue:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mns:cn-hangzhou:164901546557****:queues/zeus",
"time": "2021-04-08T06:28:17.093Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T07:06:34.028Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "MNS-Function-mnstrigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
}
]
Referensi bidang event
Setiap elemen dalam array mengikuti spesifikasi CloudEvents.
Bidang envelope CloudEvents
| Field | Type | Example | Description |
|---|---|---|---|
id |
String | c2g71017-6f65-fhcf-a814-a396fc8d**** |
ID event unik |
source |
String | MNS-Function-mnstrigger |
Identifikasi sumber event (nama event bus) |
type |
String | mns:Queue:SendMessage |
Jenis event |
subject |
String | acs:mns:cn-hangzhou:...:queues/zeus |
ARN dari antrian sumber |
time |
String | 2021-04-08T06:28:17.093Z |
Waktu pesan dimasukkan ke antrian (ISO 8601) |
specversion |
String | 1.0 |
Versi spesifikasi CloudEvents |
datacontenttype |
String | application/json; charset=utf-8 |
Jenis konten dari bidang data |
aliyunregionid |
String | cn-chengdu |
Wilayah tempat antrian berada |
aliyunaccountid |
String | 164901546557**** |
ID akun Alibaba Cloud |
aliyunpublishtime |
String | 2021-10-15T07:06:34.028Z |
Waktu EventBridge menerbitkan event |
Bidang `data`
| Field | Type | Example | Description |
|---|---|---|---|
requestId |
String | 606EA3074344430D4C81**** |
ID unik dari permintaan pengiriman pesan |
messageId |
String | C6DB60D1574661357FA227277445**** |
ID unik dari pesan |
messageBody |
String | TEST |
Konten isi pesan |
Langkah 3: Tulis dan uji fungsi
Setelah pemicu dibuat, tulis kode fungsi Anda, deploy, lalu verifikasi bahwa pemicu berfungsi dari awal hingga akhir.
Tulis dan deploy kode fungsi
Pada tab Code, tulis penanganan Anda dan klik Deploy Code.
Contoh berikut dalam Node.js menunjukkan cara menulis kode fungsi:
'use strict';
/*
Untuk mengaktifkan fitur inisialisasi,
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);
// Parse dan proses event.
callback(null, 'return result');
}
Uji fungsi
Gunakan salah satu metode berikut:
-
Event simulasi: Jika Anda telah mengonfigurasi event pengujian di Langkah 2, klik Test Function pada tab Code.
-
Pesan nyata: Masuk ke Konsol Simple Message Queue (formerly MNS), pilih antrian sumber, lalu klik Send Message.
Setelah fungsi dieksekusi, lihat output-nya di Real-time Logs.
Langkah selanjutnya
-
Ubah atau hapus pemicu: Kelola pemicu
-
Konfigurasikan kebijakan retry dan dead-letter queues: Fitur lanjutan pemicu