Gunakan templat pembersihan data yang disediakan oleh Function Compute untuk memproses data pesan. Anda juga dapat memodifikasi kode templat sesuai kebutuhan pembersihan kustom. Topik ini menggunakan contoh pemisahan konten dari pesan ApsaraMQ for RocketMQ guna menjelaskan jenis-jenis templat pemrosesan pesan dan cara menggunakannya.
Pengenalan fungsi
Tugas pembersihan data pesan menyediakan kemampuan operasional dasar yang didukung oleh Function Compute. Setelah membuat tugas pembersihan data untuk pesan ApsaraMQ for RocketMQ, masuk ke Konsol Function Compute untuk menyesuaikan kode dan mengubah konfigurasi fungsi.
Operator | Deskripsi operator |
Message filtering | Mencocokkan konten pesan terhadap ekspresi reguler dan mengirimkan pesan yang sesuai ke tujuan. Untuk informasi selengkapnya, lihat Event patterns. |
Message transformation | Mengganti konten pesan berdasarkan pencocokan string, seperti mengubah kapitalisasi karakter. Mengirimkan pesan hasil transformasi ke tujuan. Untuk informasi selengkapnya, lihat Transform event content. |
Memisahkan konten pesan berdasarkan ekspresi reguler dan mengirimkan setiap bagian hasil pemisahan sebagai pesan terpisah ke tujuan. | |
Mencocokkan konten pesan terhadap ekspresi reguler. Mengarahkan pesan yang sesuai ke tujuan yang bersesuaian dan pesan yang tidak sesuai ke tujuan default. | |
Memperkaya konten pesan berdasarkan sumber enrichment. Misalnya, jika pesan asli berisi AccountID, Anda dapat melakukan kueri ke database menggunakan AccountID tersebut untuk mendapatkan wilayah pelanggan, menambahkan wilayah ke isi pesan asli, lalu mengirimkan pesan tersebut ke layanan tujuan. | |
Memetakan konten pesan berdasarkan ekspresi reguler. Misalnya, Anda dapat menyamarkan bidang sensitif dalam pesan atau mengurangi ukuran pesan hingga standar minimum. |
Contoh skenario
Content splitting
Sebagai contoh, Anda perlu memisahkan pesan asli—daftar siswa [Zhang San, male, Class 4|Li Si, female, Class 3|Wang Wu, male, Class 4]—menjadi tiga pesan terpisah, lalu mendorongnya ke layanan tujuan masing-masing. Untuk melakukannya, gunakan operator content splitting. Pesan hasil pemisahan adalah sebagai berikut:
message:
[Zhang San, male, Class 4]
message:
[Li Si, female, Class 3]
message:
[Wang Wu, male, Class 4]Gambar berikut menunjukkan hasilnya.
Dynamic routing
Sebagai contoh, berikut ini adalah daftar informasi pasta gigi.
message:
[BrandA, toothpaste, $12.98, 100g
BrandB, toothpaste, $7.99, 80g
BrandC, toothpaste, $1.99, 100g]Anda perlu mengarahkan daftar tersebut ke topik tujuan berdasarkan aturan dinamis kustom. Aturan tersebut dijelaskan sebagai berikut.
Jika pesan dimulai dengan BrandA, kirimkan ke topik BrandA-item-topic dan BrandA-discount-topic.
Jika pesan dimulai dengan BrandB, kirimkan ke topik BrandB-item-topic dan BrandB-discount-topic.
Kirimkan semua pesan lainnya ke Unknown-brand-topic.
Aturan tersebut dituliskan dalam format JSON sebagai berikut.
{
"defaultTopic": "Unknown-brand-topic",
"rules": [
{
"regex": "^BrandA",
"targetTopics": [
"BrandA-item-topic",
"BrandA-discount-topic"
]
},
{
"regex": "^BrandB",
"targetTopics": [
"BrandB-item-topic",
"BrandB-discount-topic"
]
}
]
}Gambar berikut menunjukkan hasilnya.
Content enrichment
Topik ini menggunakan contoh enriching data dari skenario pemrosesan segmen alamat IP. Asumsikan bahwa log akses untuk suatu layanan adalah sebagai berikut.
{
"accountID": "164901546557****",
"hostIP": "192.168.XX.XX"
}Anda perlu menghitung sumber alamat IP. Hubungan pemetaan tersebut disimpan dalam database MySQL.
CREATE TABLE `tb_ip` (
-> `IP` VARCHAR(256) NOT NULL,
-> `Region` VARCHAR(256) NOT NULL,
-> `ISP` VARCHAR(256) NOT NULL,
-> PRIMARY KEY (`IP`)
-> );Pesan yang telah diproses adalah sebagai berikut.
{
"accountID": "164901546557****",
"hostIP": "192.168.XX.XX",
"region": "Beijing"
}Gambar berikut menunjukkan hasilnya.
Content mapping
Sebagai contoh, berikut ini adalah informasi pendaftaran karyawan perusahaan, yang mencakup informasi pribadi seperti ID karyawan dan nomor telepon.
Zhang San, Employee ID 1, 131 1111 1111
Li Si, Employee ID 2, 132 2222 2222
Wang Wu, Employee ID 3, 133 3333 3333Anda perlu menyamarkan informasi pribadi karyawan dalam pesan tersebut, lalu mendorongnya ke layanan tujuan. Hasilnya adalah sebagai berikut.
Zhang*, Employee ID *, *** **** ****
Li*, Employee ID *, *** **** ****
Wang*, Employee ID *, *** **** ****Gambar berikut menunjukkan hasilnya.
Prosedur
1. Buat instans ApsaraMQ for RocketMQ dan topik
Masuk ke Konsol Message Queue for Apache RocketMQ. Di panel navigasi sebelah kiri, pilih Instances. Di bilah menu atas, pilih Wilayah, lalu klik Create Instance.
Di panel Create RocketMQ Instance, pilih Instance Version, misalnya 4.0 Series. Pilih Standard Instance untuk Instance Type. Masukkan nama instans, misalnya
test, dan deskripsi instans, lalu klik OK.Di halaman Instance List, klik instans target. Di panel navigasi sebelah kiri pada halaman detail instans, pilih Topic Management, lalu klik Create Topic.
Di panel Create Topic, tentukan nama topik, misalnya
source-topicdantarget-topic. Masukkan Description, pilih Normal message untuk Message type, lalu klik OK.CatatanAnda harus membuat minimal dua topik. Satu topik berfungsi sebagai sumber event untuk mengirimkan pesan asli, dan yang lainnya berfungsi sebagai target event untuk menerima data yang telah dibersihkan. Kedua topik tersebut dapat berada dalam instans ApsaraMQ for RocketMQ yang sama atau berbeda.
2. Buat event stream
Masuk ke Konsol EventBridge. Di panel navigasi sebelah kiri, pilih Event Streams. Pada bilah menu atas, pilih wilayah, lalu klik Create Event Stream.
Di halaman Create Event Stream, gunakan wizard konfigurasi Source, Filtering, Transform, dan Sink untuk mengonfigurasi sumber event, aturan filtering, templat pembersihan data, dan target event secara berurutan. Lalu klik Save.

①Source dan ④Sink
Untuk Source, pilih instans ApsaraMQ for RocketMQ bernama test dan topik bernama
source-topic.Untuk Sink, pilih instans ApsaraMQ for RocketMQ bernama test dan topik bernama
target-topic.
Biarkan nilai default untuk item konfigurasi lainnya.
②Filtering
Konfigurasi opsional. Biarkan nilai default, lalu klik Next.
③Transform
Select an Alibaba Cloud service: Function Compute.
Pilih New Function Template: Fungsi FC
EventStreaming_Transform_Customized_****akan dibuat saat Anda membuat event stream.Function templates: Topik ini menggunakan templat content splitting sebagai contoh. Templat yang tersedia meliputi content splitting, content mapping, content enrichment, dan dynamic routing. Anda dapat memilih salah satu templat ini sesuai kebutuhan. Setiap templat menyediakan logika pemrosesan data dasar yang dapat langsung digunakan atau disesuaikan.

3. Uji dan verifikasi
3.1 Kirim pesan asli dari topik instans ApsaraMQ for RocketMQ sumber
Masuk ke Konsol Message Queue for Apache RocketMQ. Temukan topik
source-topicdari instans Source yang Anda konfigurasi saat membuat event stream. Di kolom Actions, klik Quick Experience.Di panel Quick Experience for Message Production and Consumption, masukkan pesan mentah
[Zhang San, Male, Class 4|Li Si, Female, Class 3|Wang Wu, Male, Class 4], lalu klik OK untuk mengirimkan pesan.
3.2 Konfirmasi bahwa pesan telah dipisahkan dengan benar di topik instans ApsaraMQ for RocketMQ tujuan
Di Konsol Message Queue for Apache RocketMQ, temukan topik instans Sink (destination)
target-topicyang Anda konfigurasi saat membuat event stream. Klik nama topik tersebut, lalu pilih tab Message Query.Pilih Query method sebagai Query by Topic, lalu klik Query. Di hasil kueri, Anda dapat melihat bahwa pesan yang dikirim pada langkah sebelumnya telah dipisahkan menjadi tiga pesan saat dikirimkan ke tujuan. Klik Details pada setiap baris pesan untuk melihat ketiga pesan tersebut:
"data": "Zhang San, male, Class 4","data": "Li Si, female, Class 3", dan"data": "Wang Wu, male, Class 4".
4. Bersihkan sumber daya
Setelah pengujian selesai, jika Anda tidak lagi memerlukan fitur ini, segera hapus sumber daya yang telah dibuat untuk menghindari biaya yang tidak perlu. Untuk informasi selengkapnya, lihat Delete a topic, Delete an ApsaraMQ for RocketMQ instance, dan Delete a function.