All Products
Search
Document Center

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

Last Updated:Jun 22, 2026

Anda dapat menggunakan templat pembersihan data yang disediakan oleh Function Compute untuk memproses data pesan atau memodifikasi kode templat sesuai kebutuhan bisnis guna memenuhi persyaratan pembersihan kustom. 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 operasional 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.

Operator

Deskripsi

Message filtering

Mencocokkan konten pesan berdasarkan ekspresi reguler dan mengirim pesan yang cocok ke tujuan tertentu. Untuk informasi selengkapnya, lihat Pola event untuk aliran acara.

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 hasil transformasi dapat dikirim ke tujuan tertentu. Untuk informasi selengkapnya, lihat Transformasi event dalam aliran acara.

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, 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 mengurangi ukuran pesan hingga ukuran minimum.

Contoh

Content splitting

Sebagai contoh, 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]

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. Berikut penjelasan aturannya:

  • 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 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"
      ]
    }
  ]
}

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 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 hasil pemrosesan:

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

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 sebelum mengirim pesan ke layanan tujuan. Kode contoh berikut menunjukkan hasilnya:

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

Prosedur

1. Buat topik instans ApsaraMQ for RocketMQ

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

  2. Di panel Create RocketMQ Instance, pilih Instance Version, misalnya 4.0 Series. Untuk Instance Type, pilih Standard Instance. Masukkan nama instans, misalnya test, dan deskripsi. Lalu, klik OK.

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

  4. Di panel Create Topic, buat dua topik bernama source-topic dan target-topic. Masukkan Description. Untuk Message Type, pilih Normal Message. 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 (event stream)

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

  2. Di halaman Create Event Stream, konfigurasikan sumber event, aturan filter, templat pembersihan data, dan target event pada langkah Source, Filtering, Transformation, dan Sink. Lalu, klik Save.

    Source dan Sink

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

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

    Biarkan nilai konfigurasi lainnya tetap default.

    Filtering

    Langkah ini opsional. Biarkan pengaturan default dan klik Next.

    ③ Transformation

    • Select Alibaba Cloud Service: Function Compute.

    • Pilih Create Function Template: Fungsi FC baru EventStreaming_Transform_Customized_**** akan dibuat bersamaan dengan aliran acara.

    • Function Template: Contoh ini menggunakan templat Content Splitting. Templat lain yang tersedia meliputi Content Mapping, Content Enrichment, dan Dynamic Routing. Pilih templat sesuai kebutuhan Anda. Templat-templat ini menyediakan logika pemrosesan data dasar yang dapat langsung digunakan atau dikustomisasi.

    Nama fungsi dibuat secara otomatis dengan format EventStreaming_Transform_Split_ diikuti akhiran tertentu. Kode templat mendekode event menggunakan UTF-8, lalu mengurai array pesan menggunakan ast.literal_eval dan json.loads. Jika konfigurasi valid, label hijau Valid Configuration akan muncul di bagian atas halaman.

3. Uji dan verifikasi

3.1 Kirim pesan asli di topik instans RocketMQ sumber

  1. Masuk ke Konsol Message Queue for Apache RocketMQ, temukan topik source-topic dari instans Source yang Anda konfigurasikan saat membuat aliran acara, lalu di kolom Actions di sebelah kanan, klik Quick Experience.

  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.

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

  1. Di Konsol Message Queue for Apache RocketMQ, temukan topik target-topic untuk instans Sink yang Anda konfigurasikan saat membuat aliran acara, klik nama topik tersebut, lalu pilih tab Message Query.

  2. Untuk Query Method, pilih Query By Topic, lalu klik Search. Hasil kueri menunjukkan bahwa pesan asli telah dipisah menjadi tiga pesan terpisah di sink. Klik Details pada baris masing-masing pesan. Ketiga pesan tersebut adalah "data": "Jack, Male, Class 4" , "data": "Alice, Female, Class 3", dan "data": "John, Male, Class 4".

4. Bersihkan sumber daya

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