全部产品
Search
文档中心

Function Compute:Bersihkan data pesan ApsaraMQ for RocketMQ menggunakan Function Compute

更新时间:Mar 20, 2026

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.

Content splitting

Memisahkan konten pesan berdasarkan ekspresi reguler dan mengirimkan setiap bagian hasil pemisahan sebagai pesan terpisah ke tujuan.

Dynamic routing

Mencocokkan konten pesan terhadap ekspresi reguler. Mengarahkan pesan yang sesuai ke tujuan yang bersesuaian dan pesan yang tidak sesuai ke tujuan default.

Content enrichment

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.

Content mapping

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.

image

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.

image

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.

image

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 3333

Anda 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.

image

Prosedur

1. Buat instans ApsaraMQ for RocketMQ dan topik

  1. 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.

  2. 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.

  3. Di halaman Instance List, klik instans target. Di panel navigasi sebelah kiri pada halaman detail instans, pilih Topic Management, lalu klik Create Topic.

  4. Di panel Create Topic, tentukan nama topik, misalnya source-topic dan target-topic. Masukkan Description, pilih Normal message untuk Message type, lalu klik OK.

    Catatan

    Anda 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

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

  2. 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.

    image

    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.

    image

3. Uji dan verifikasi

3.1 Kirim pesan asli dari topik instans ApsaraMQ for RocketMQ sumber

  1. Masuk ke Konsol Message Queue for Apache RocketMQ. Temukan topik source-topic dari instans Source yang Anda konfigurasi saat membuat event stream. Di kolom Actions, klik Quick Experience.

  2. 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

  1. Di Konsol Message Queue for Apache RocketMQ, temukan topik instans Sink (destination) target-topic yang Anda konfigurasi saat membuat event stream. Klik nama topik tersebut, lalu pilih tab Message Query.

  2. 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".

    image

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.