Fitur pembersihan data pesan menyediakan templat pemrosesan pesan umum, seperti pemisahan pesan, perutean dinamis, dan pengayaan pesan. Anda dapat langsung menggunakan templat ini untuk memproses pesan atau memodifikasi kodenya sesuai kebutuhan. Topik ini menjelaskan jenis dan penggunaan templat pembersihan data pesan untuk ApsaraMQ for RocketMQ.
Informasi latar belakang
Tugas pembersihan data pesan menyediakan kemampuan operator dasar dan menggunakan Function Compute sebagai logika dasarnya. Setelah membuat tugas pembersihan data pesan ApsaraMQ for RocketMQ, Anda dapat masuk ke Function Compute console untuk menyesuaikan kode dan mengubah konfigurasi fungsi yang sesuai.
Operator | Kemampuan Operator |
Message filtering | Sesuaikan konten pesan menggunakan ekspresi reguler. Kirim pesan yang sesuai ke target. Untuk informasi selengkapnya, lihat event patterns. |
Message transformation | Ganti konten pesan berdasarkan pencocokan string. Misalnya, ubah karakter antara huruf besar dan kecil. Kirim pesan yang telah ditransformasi ke target. Untuk informasi selengkapnya, lihat event content transformation. |
Pisahkan konten pesan menggunakan ekspresi reguler. Kirim setiap pesan hasil pemisahan ke target. | |
Sesuaikan konten pesan menggunakan ekspresi reguler. Rutekan pesan yang sesuai ke target yang sesuai. Rutekan pesan yang tidak sesuai ke target default. | |
Perkaya konten pesan menggunakan sumber pengayaan. Misalnya, jika pesan asli berisi AccountID, lakukan kueri ke database menggunakan AccountID tersebut. Lalu tambahkan wilayah pelanggan ke isi pesan sebelum mengirimkannya ke layanan target. | |
Petakan konten pesan menggunakan ekspresi reguler. Misalnya, sembunyikan bidang sensitif atau kurangi ukuran pesan hingga standar minimum. |
Content splitting
Contoh
Misalnya, pertimbangkan daftar siswa berikut.
message:
[Zhao San, male, 17, Class 4; Li Si, female, 17, Class 3; Wang Wu, male, 17, Class 4]Anda dapat memisahkan pesan ini menjadi catatan siswa individual, lalu mengirim setiap catatan sebagai pesan terpisah ke layanan targetnya. Hasilnya sebagai berikut.
message:
[Zhao San, male, 17, Class 4]
message:
[Li Si, female, 17, Class 3]
message:
[Wang Wu, male, 17, Class 4]Prosedur
Masuk ke Konsol ApsaraMQ for RocketMQ.
Di panel navigasi sebelah kiri, pilih . Lalu, di bilah menu atas, pilih wilayah.
Pada halaman Message sink, klik Create task.
Di panel Create message sink, konfigurasikan item berikut, lalu klik OK.
Item konfigurasi utama dijelaskan di bawah ini. Biarkan semua pengaturan lain pada nilai default-nya.
Informasi dasar
Item konfigurasi
Deskripsi
Task name
Masukkan nama tugas.
Egress Type
Pilih RocketMQ. Layanan pesan yang didukung meliputi RocketMQ, RabbitMQ, Simple Message Queue (formerly MNS), dan Kafka.
Konfigurasi sumber daya
Item konfigurasi
Deskripsi
Source
Region
Pilih China (Hangzhou).
Version
Pilih versi RocketMQ. Contoh ini menggunakan RocketMQ 5.x.
RocketMQ instance
Pilih instans RocketMQ yang menghasilkan pesan.
Topic
Pilih topik dari instans sumber.
Target
Version
Pilih versi RocketMQ yang menerima pesan. Contoh ini menggunakan RocketMQ 5.x.
Instance ID
Pilih ID instans dari instans RocketMQ yang menerima pesan.
Topic
Pilih topik dari instans target.
Pemrosesan data
Message filtering: Pilih No filtering.
Message transformation: Pilih Custom configuration. Untuk Message body (body), pilih Data cleansing. Lalu pilih Create function template. Untuk Function template, pilih Content splitting transform_split. Kemudian, modifikasi kode fungsi sesuai kebutuhan.
Setelah pembuatan, Anda dapat masuk ke Function Compute console untuk melihat service dan function yang dibuat secara otomatis.
Dynamic routing
Contoh
Misalnya, pertimbangkan daftar inventaris pasta gigi berikut.
message:
[BrandA, toothpaste, $12.98, 100g
BrandB, toothpaste, $7.99, 80g
BrandC, toothpaste, $1.99, 100g]Anda dapat merutekan daftar ini ke topik target menggunakan aturan dinamis kustom. Aturannya sebagai berikut.
Jika pesan diawali dengan BrandA, kirim ke BrandA-item-topic dan BrandA-discount-topic.
Jika pesan diawali dengan BrandB, kirim ke BrandB-item-topic dan BrandB-discount-topic.
Semua pesan lainnya dapat dikirim ke Unknown-brand-topic.
Representasi JSON dari aturan tersebut adalah 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"
]
}
]
}Prosedur
Untuk langkah-langkah detail, lihat prosedur untuk content splitting. Untuk Function template, pilih Dynamic routing dynamic_routing.
Content enrichment
Contoh
Contoh ini menunjukkan cara memperkaya segmen alamat IP. Asumsikan log akses untuk suatu layanan adalah sebagai berikut.
{
"accountID": "164901546557****",
"hostIP": "192.168.XX.XX"
}Anda harus mengidentifikasi origin alamat IP tersebut. Anda dapat menyimpan pemetaannya 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 diperkaya adalah sebagai berikut.
{
"accountID": "164901546557****",
"hostIP": "192.168.XX.XX",
"region": "beijing"
}Prosedur
Untuk langkah-langkah detail, lihat prosedur untuk content splitting. Untuk Function template, pilih Content enrichment transform_enrichment.
Content mapping
Contoh
Misalnya, pertimbangkan data pendaftaran karyawan berikut untuk suatu perusahaan. Data ini mencakup informasi pribadi, seperti ID karyawan dan nomor telepon.
Zhao San, ID 1, 131 1111 1111
Li Si, ID 2, 132 2222 2222
Wang Wu, ID 3, 133 3333 3333Anda dapat menyembunyikan informasi pribadi dalam pesan tersebut, lalu mengirimnya ke layanan target. Hasilnya sebagai berikut.
Zhang*, Employee ID *, *** **** ****
Li*, Employee ID *, *** **** ****
Wang*, Employee ID *, *** **** ****Prosedur
Untuk langkah-langkah detail, lihat prosedur untuk content splitting. Untuk Function template, pilih Content mapping transform_projection.