Simple Message Queue (formerly MNS) dapat digunakan sebagai sumber event melalui EventBridge. Anda dapat mengonfigurasi pemicu topik di Function Compute untuk memicu fungsi terkait guna melakukan pemrosesan khusus terhadap pesan yang dikirim ke topik tersebut.
Latar Belakang
Simple Message Queue (formerly MNS) adalah layanan messaging terdistribusi yang menawarkan skalabilitas, efisiensi tinggi, keandalan, keamanan, dan ketersediaan. Layanan ini memungkinkan pengembang aplikasi mentransfer data dan notifikasi antar komponen terdistribusi dalam suatu aplikasi serta membangun sistem yang loosely coupled. Di Simple Message Queue (formerly MNS), pesan dipublikasikan ke topik. Publisher dapat memanggil operasi PublishMessage untuk mempublikasikan pesan ke suatu topik. Subscriber dari topik tersebut akan menerima pesan tersebut. Untuk informasi selengkapnya, lihat PublishMessage.
Mengonfigurasi pemicu untuk suatu topik sama artinya dengan mendaftarkan fungsi sebagai subscriber ke topik tersebut. Ketika publisher mempublikasikan pesan ke topik, pesan tersebut diteruskan ke fungsi dan digunakan sebagai parameter event dari penanganan fungsi untuk memicu eksekusi fungsi tersebut. Untuk informasi selengkapnya, lihat Dasar-dasar.
Integrasi antara Simple Message Queue (formerly MNS) dan Function Compute memberikan manfaat berikut:
Memungkinkan Anda melakukan operasi lanjutan pada pesan sebelum mengirimkannya melalui email atau pesan teks.
Menghilangkan kebutuhan untuk membuat layanan pada endpoint HTTP.
Mendukung berbagai operasi kustom. Misalnya, Anda dapat mengirim pesan ke Slack atau menyimpan pesan tertentu secara persisten.
Prasyarat
Function Compute
Simple Message Queue (formerly MNS)
Catatan Penggunaan
Topik Simple Message Queue (formerly MNS) dan fungsi Function Compute yang akan dikaitkan harus berada di wilayah yang sama.
Hindari loop rekursif.
Sebagai contoh, hindari logika berikut saat menulis kode fungsi: Topik A memicu Fungsi B, lalu Fungsi B mempublikasikan pesan baru ke Topik A, yang kemudian memicu Fungsi B lagi. Logika ini menghasilkan loop tak hingga dalam pemanggilan fungsi.
Langkah 1: Buat topik dan pemicu
Masuk ke Konsol Function Compute. Pada panel navigasi di sebelah kiri, pilih .
Pada bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang dituju.
Di halaman detail fungsi, klik tab Triggers. Lalu, klik Create Trigger.
Di panel Create Trigger, konfigurasikan parameter, lalu klik OK.
Parameter
Deskripsi
Contoh
Trigger Type
Pilih Simple Message Queue (formerly MNS) Triggered by Topic Async Invocation.
Simple Message Queue (formerly MNS) Triggered by Topic
Name
Tentukan nama pemicu sesuai keinginan.
trigger-mns
Version or Alias
Nilai default: LATEST. Jika ingin membuat pemicu untuk versi atau alias lain, kembali ke halaman Function Details dan pilih versi atau alias di pojok kanan atas halaman. Untuk informasi selengkapnya tentang versi dan alias, lihat Kelola versi dan Kelola alias.
LATEST
MNS Region
Pilih wilayah tempat topik berada. Topik harus berada di wilayah yang sama dengan fungsi di Function Compute.
China (Chengdu)
Topic
Pilih topik dari daftar.
Mytopic
Filter Tag
Tentukan tag untuk penyaringan pesan.
Eksekusi fungsi hanya dipicu ketika pesan yang diterima mengandung tag penyaringan yang ditentukan.
tag
Event Format
Pilih format event. Nilai yang valid:
STREAM
JSON
JSON
Retry Policy
Pilih kebijakan retry. Nilai yang valid:
Backoff Retry
Exponential Decay Retry
Untuk informasi selengkapnya tentang cara menentukan kebijakan retry, lihat NotifyStrategy.
Backoff Retry
Role Name
Pilih AliyunMNSNotificationRole.
CatatanSetelah mengonfigurasi parameter di atas, klik OK. Jika Anda membuat pemicu jenis ini untuk pertama kalinya, klik Authorize Now pada pesan yang muncul.
AliyunMNSNotificationRole
Langkah 2: Konfigurasi parameter input fungsi
Di tab Code pada halaman detail fungsi, klik ikon
di samping Test Function dan pilih Configure Test Parameters dari daftar drop-down.Di panel Configure Test Parameters, klik tab Create New Test Event atau Modify Existing Test Event, masukkan nama event dan konten event, lalu klik OK.
Pesan yang dipublikasikan ke topik diproses berdasarkan format isi pesan. Hal ini membentuk event yang digunakan untuk memanggil fungsi di Function Compute. Untuk informasi selengkapnya, lihat NotifyContentFormat.
Contoh format konten event jika Anda mengatur parameter Event Format ke STREAM untuk pemicu topik:
Kode contoh berikut menunjukkan format konten event jika pesan tidak mengandung atribut pesan:
CatatanJika pesan tidak mengandung atribut pesan, konten event berupa string dalam format JSON.
# Isi pesan. 'hello topic'Kode contoh berikut menunjukkan format konten event jika pesan mengandung atribut pesan:
CatatanKonten event berisi pasangan kunci-nilai yang terkait dengan atribut pesan. Untuk informasi selengkapnya, lihat PublishMessage.
{ "body": "hello topic", "attrs": { "Extend": "{\\"key\\":\\"value\\"}" } }
Contoh format konten event jika Anda mengatur parameter Event Format ke JSON untuk pemicu topik:
Kode contoh berikut menunjukkan format konten event jika pesan tidak mengandung atribut pesan:
{ "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216480040, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C082B923D4EAC694B76D928****" }Kode contoh berikut menunjukkan format konten event jika pesan mengandung atribut pesan:
CatatanKonten event berisi pasangan kunci-nilai yang terkait dengan atribut pesan. Untuk informasi selengkapnya, lihat PublishMessage.
{ "key": "value", "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216302888, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C281B283D4EAC694B742528****" }
Tabel berikut menjelaskan parameter-parameter event.
Parameter
Tipe
Contoh
Deskripsi
key
String
value
Pasangan kunci-nilai yang terkait dengan atribut pesan.
TopicOwner
String
118620210433****
ID akun pemilik topik.
Message
String
hello topic
Isi pesan.
Subscriber
String
118620210433****
ID akun pengguna yang berlangganan topik.
PublishTime
Int
1550216302888
Waktu pesan dipublikasikan.
SubscriptionName
String
test-fc-subscribe
Nama langganan.
MessageMD5
String
BA4BA9B48AC81F0F9C66F6C909C3****
Nilai hash MD5 dari isi pesan.
TopicName
String
Mytopic
Nama topik.
MessageId
String
2F5B3C281B283D4EAC694B742528****
ID pesan.
Langkah 3: Tulis kode fungsi dan uji fungsi
Setelah membuat pemicu topik, Anda dapat menulis kode fungsi dan mengujinya untuk memverifikasi kevalidan kode tersebut.
Di tab Code pada halaman Function Details, tulis kode di editor kode dan klik Deploy.
Dalam contoh ini, kode fungsi ditulis dalam Python. Kode contoh berikut dapat digunakan sebagai templat fungsi untuk pemicu topik:
import json import logging def handler(event, context): logger = logging.getLogger() logger.info("mns_topic trigger event = {}".format(event)) # Contohnya, Anda dapat mencatat event ke Tablestore. return "OK"Klik Test Function.
Setelah fungsi dieksekusi, Anda dapat melihat hasilnya di tab Code.
Informasi Lebih Lanjut
Selain melalui Konsol Function Compute, Anda juga dapat mengonfigurasi pemicu dengan cara berikut:
Gunakan tool Serverless Devs untuk mengonfigurasi pemicu. Untuk informasi selengkapnya, lihat Perintah umum Serverless Devs.
Gunakan SDK untuk mengonfigurasi pemicu. Untuk informasi selengkapnya, lihat SDK.
Untuk mengubah atau menghapus pemicu, lihat Kelola pemicu.