全部产品
Search
文档中心

Function Compute:Gunakan Function Compute untuk membersihkan data pesan di RocketMQ

更新时间:Dec 19, 2025

Anda dapat menggunakan templat pembersihan data yang disediakan oleh Function Compute untuk memproses data pesan atau memodifikasi kode templat tersebut sesuai kebutuhan bisnis guna memenuhi persyaratan pembersihan khusus. Topik ini menggunakan contoh pemisahan konten pada data di ApsaraMQ for RocketMQ untuk menjelaskan jenis-jenis templat pemrosesan pesan dan cara menggunakannya.

Ikhtisar

Fitur pembersihan data menyediakan kemampuan operator dasar berbasis Function Compute. Setelah membuat tugas pembersihan data pesan di ApsaraMQ for RocketMQ, Anda dapat masuk ke Function Compute untuk memodifikasi kode dan konfigurasi fungsi tersebut.

Operator

Deskripsi

Message filtering

Mencocokkan konten pesan berdasarkan ekspresi reguler dan mengirim pesan yang cocok ke tujuan tertentu. Untuk informasi selengkapnya, lihat Event patterns.

Message conversion

Mengonversi konten pesan berdasarkan kondisi pencocokan string dan mengirim pesan hasil konversi ke tujuan tertentu. Misalnya, konversi huruf besar/kecil dapat dilakukan. Pesan yang telah ditransformasi dapat dikirim ke tujuan tertentu. Untuk informasi selengkapnya, lihat Event transformation.

Content splitting

Memisahkan konten pesan berdasarkan ekspresi reguler dan mengirim pesan hasil pemisahan ke tujuan tertentu.

Dynamic routing

Mencocokkan konten pesan berdasarkan ekspresi reguler dan mengirim pesan yang cocok ke tujuan tertentu serta pesan yang tidak cocok ke tujuan default.

Content enrichment

Memperkaya konten pesan berdasarkan sumber. Misalnya, jika konten asli pesan berisi AccountID, maka AccountID tersebut digunakan untuk melakukan kueri ke database dan mendapatkan wilayah pelanggan. Sistem menyisipkan wilayah pelanggan ke dalam isi pesan asli dan mengirim isi pesan tersebut ke layanan tujuan tertentu.

Content mapping

Memetakan konten pesan berdasarkan ekspresi reguler. Misalnya, sistem dapat menyamarkan bidang sensitif dalam pesan atau memperkecil ukuran pesan hingga ukuran minimum.

Contoh

Content splitting

Misalnya, Anda perlu memisahkan pesan daftar siswa asli [Jack, Male, Class 4|Alice, Female, Class 3|John, Male, Class 4] menjadi tiga pesan terpisah, lalu mengirim ketiganya ke layanan tujuan masing-masing. Untuk menerapkan hal ini, Anda dapat menggunakan operator content splitting. Pesan hasil pemisahan adalah sebagai berikut:

message:
    [Jack, Male, Class 4]
message:
    [Alice, Female, Class 3]
message:
    [John, Male, Class 4]

Gambar berikut menunjukkan prosesnya.

image

Dynamic routing

Pesan berikut berisi informasi pasta gigi dari tiga merek:

message:
[BrandA, toothpaste, $12.98, 100g
 BrandB, toothpaste, $7.99, 80g
 BrandC, toothpaste, $1.99, 100g]

Daftar tersebut perlu dikirim ke topik tujuan berdasarkan aturan dinamis kustom. Aturan tersebut dijelaskan sebagai berikut:

  • Kirim pesan yang dimulai dengan BrandA ke topik BrandA-item-topic dan BrandA-discount-topic.

  • Kirim pesan yang dimulai dengan BrandB ke topik BrandB-item-topic dan BrandB-discount-topic.

  • Kirim pesan lainnya ke topik Unknown-brand-topic.

Kode contoh berikut menunjukkan format JSON dari aturan tersebut:

{
  "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 prosesnya.

image

Content enrichment

Pada contoh ini, sebuah Blok CIDR diperkaya. Kode contoh berikut memberikan contoh log akses suatu layanan:

{
  "accountID": "164901546557****",
  "hostIP": "192.168.XX.XX"
}

Kode contoh berikut menunjukkan cara melakukan kueri sumber alamat IP dan menyimpan hubungan pemetaan tersebut 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`)
    -> );

Kode contoh berikut menunjukkan pesan yang telah diproses:

{
  "accountID": "164901546557****",
  "hostIP": "192.168.XX.XX",
  "region": "beijing"
}

Gambar berikut menunjukkan prosesnya.

image

Content mapping

Pesan berikut berisi informasi pendaftaran karyawan suatu perusahaan.

Zhang San, Employee ID 1, 131 1111 1111
Li Si, Employee ID 2, 132 2222 2222
Wang Wu, Employee ID 3, 133 3333 3333

Nama, ID, dan nomor telepon karyawan dalam pesan di atas bersifat rahasia. Oleh karena itu, Anda perlu menyamarkan nama, ID, dan nomor telepon tersebut sebelum mengirim pesan ke layanan tujuan. Kode contoh berikut menunjukkan hasilnya:

Ja*, Employee ID *, ***********
Ma*, Employee ID *, ***********
Dav*, Employee ID *, *********** 

Gambar berikut menunjukkan prosesnya.

image

Prosedur

1. Buat topik instans ApsaraMQ for RocketMQ

  1. Masuk ke Konsol ApsaraMQ for RocketMQ. Di panel navigasi sebelah kiri, klik Instances. Di bilah navigasi atas, pilih Wilayah, lalu klik Create Instance.

  2. Di panel Create RocketMQ Instance, pilih Instance Version, misalnya 4.0 Series, pilih Standard Instance untuk Instance Type, masukkan nama instans seperti test, masukkan deskripsi instans, lalu klik OK.

  3. Di halaman Instances, klik instans target. Di panel navigasi sebelah kiri halaman detail instans, klik Topics, lalu klik Create Topic.

  4. Di panel Create Topic, atur nama topik, seperti source-topic dan target-topic, masukkan Description, pilih Normal Message untuk Message Type, lalu klik OK.

    Catatan

    Anda perlu membuat setidaknya dua topik: satu sebagai sumber event untuk mengirim pesan asli dan satu lagi sebagai target event untuk menerima data yang telah dibersihkan. Kedua topik tersebut dapat berada dalam instans RocketMQ yang sama atau berbeda.

2. Buat aliran acara

  1. Masuk ke Konsol EventBridge. Di panel navigasi sebelah kiri, klik Event Streams. Di bilah navigasi atas, pilih Wilayah, lalu klik Create Event Stream.

  2. Di halaman Create Event Stream, konfigurasikan sumber event, aturan penyaringan, templat pembersihan data, dan target event di wizard konfigurasi Source, Filtering, Transformation, dan Sink, lalu klik Save.

    image

    Source dan ④ Sink

    • Untuk Source, pilih instans ApsaraMQ for RocketMQ test dan pilih source-topic untuk Topic.

    • Untuk Sink, pilih instans ApsaraMQ for RocketMQ test dan pilih target-topic untuk Topic.

    Biarkan nilai konfigurasi lainnya tetap default.

    Filtering

    Konfigurasi ini bersifat opsional. Biarkan nilai default dan klik Next.

    Transformation

    • Select Alibaba Cloud Service: Function Compute.

    • Pilih Create Function Template: Fungsi FC baru EventStreaming_Transform_Customized_**** akan dibuat saat Anda membuat aliran acara.

    • Function Template: Pada contoh ini, templat Content Splitting dipilih. Opsi yang tersedia meliputi Content Splitting, Content Mapping, Content Enrichment, dan Dynamic Routing. Anda dapat memilih salah satu templat di atas sesuai kebutuhan bisnis Anda. Templat tersebut menyediakan logika pemrosesan data dasar yang dapat langsung digunakan atau disesuaikan lebih lanjut.

    image

3. Uji dan verifikasi

3.1 Kirim pesan asli di topik instans RocketMQ sumber

  1. Masuk ke Konsol ApsaraMQ for RocketMQ. Temukan topik source-topic dari instans Source yang Anda konfigurasikan saat membuat aliran acara. Di kolom Actions, klik Quick Start.

  2. Di panel Start Message Production And Consumption, masukkan pesan asli [Jack, Male, Class 4|Alice, Female, Class 3|John, Male, Class 4], lalu klik OK untuk mengirim pesan tersebut.

3.2 Konfirmasi bahwa pesan telah dipisahkan dengan benar di topik instans RocketMQ tujuan

  1. Di Konsol ApsaraMQ for RocketMQ, temukan topik target-topic dari instans Sink yang Anda konfigurasikan saat membuat aliran acara. Klik nama topik tersebut dan pilih tab Message Query.

  2. Pilih Query By Topic untuk Query Method, lalu klik Search. Di hasil kueri, Anda dapat melihat bahwa pesan yang dikirim pada langkah sebelumnya telah dipisahkan menjadi tiga pesan saat dikirim ke instans tujuan. Jika Anda mengklik Details pada setiap baris pesan, Anda akan melihat ketiga pesan tersebut adalah "data": "Jack, Male, Class 4" , "data": "Alice, Female, Class 3", dan "data": "John, Male, Class 4".

    image

4. Bersihkan sumber daya

Setelah pengujian selesai, jika Anda tidak perlu menggunakan fitur ini dalam waktu dekat, segera rilis sumber daya yang telah dibuat untuk menghindari biaya yang tidak perlu. Untuk informasi selengkapnya, lihat Delete topics, Delete RocketMQ instances, dan Delete functions.