Filter dan tindakan topik

Pelanggan dapat menentukan pesan mana yang ingin mereka terima dari sebuah topik. Pesan-pesan ini ditentukan dalam bentuk satu atau beberapa aturan langganan bernama. Setiap aturan terdiri dari kondisi filter yang memilih pesan tertentu, dan secara opsional berisi sebuah tindakan yang menganotasi pesan yang dipilih.

Semua aturan tanpa tindakan digabungkan menggunakan kondisi OR dan menghasilkan satu pesan pada langganan meskipun Anda memiliki beberapa aturan yang cocok.

Setiap aturan dengan tindakan menghasilkan salinan pesan. Pesan ini akan memiliki properti yang disebut RuleName yang nilainya adalah nama aturan yang cocok. Tindakan dapat menambahkan atau memperbarui properti, atau menghapus properti dari pesan asli untuk menghasilkan pesan pada langganan.

Pertimbangkan skenario berikut:

  • Langganan memiliki lima aturan.
  • Dua aturan berisi tindakan.
  • Tiga aturan tidak berisi tindakan.

Dalam contoh ini, jika Anda mengirim satu pesan yang cocok dengan kelima aturan tersebut, Anda mendapatkan tiga pesan pada langganan. Itu dua pesan untuk dua aturan dengan tindakan dan satu pesan untuk tiga aturan tanpa tindakan.

Setiap langganan topik yang baru dibuat memiliki aturan langganan default awal. Jika Anda tidak secara eksplisit menentukan kondisi filter untuk aturan tersebut, filter yang diterapkan adalah filter true yang memungkinkan semua pesan dipilih ke dalam langganan. Aturan default tidak memiliki tindakan anotasi terkait.

Filter

Service Bus mendukung tiga ketentuan filter:

  • Filter SQL - SqlFilter mengikat ekspresi bersyarat seperti SQL yang dievaluasi di broker terhadap properti yang ditentukan pengguna dan properti sistem pesan dari pesan yang tiba. Semua properti sistem harus diawali sys. dalam ekspresi bersyarat. Subset bahasa SQL untuk ketentuan filter menguji keberadaan properti (EXISTS), nilai kosong (IS NULL), logika TIDAK/DAN/OR, operator relasional, aritmetika numerik sederhana, dan pola teks sederhana yang cocok dengan LIKE.

  • Filter Boolean - TrueFilter dan FalseFilter menyebabkan semua pesan yang datang (true) atau tidak satu pun pesan yang datang (false) untuk dipilih untuk langganan. Kedua filter ini berasal dari filter SQL.

  • Filter Korelasi - CorrelationFilter mengikat serangkaian ketentuan yang cocok dengan satu atau beberapa properti pengguna dan sistem pesan yang tiba. Penggunaan umum adalah mencocokkan dengan properti CorrelationId, tetapi aplikasi juga dapat memilih untuk mencocokkan dengan properti berikut:

    • ContentType
    • Label
    • MessageId
    • ReplyTo
    • ReplyToSessionId
    • SessionId
    • To
    • properti yang ditentukan pengguna.

    Kecocokan ada ketika nilai pesan yang tiba untuk properti sama dengan nilai yang ditentukan dalam filter korelasi. Untuk ekspresi string, perbandingannya peka huruf besar/kecil. Saat menentukan beberapa properti kecocokan, filter menggabungkannya sebagai ketentuan AND logis, yang berarti filter yang cocok, semua ketentuan harus cocok.

Semua filter mengevaluasi properti pesan. Filter tidak dapat mengevaluasi isi pesan.

Aturan filter kompleks memerlukan kapasitas pemrosesan. Secara khusus, penggunaan aturan filter SQL menyebabkan throughput pesan keseluruhan yang lebih rendah pada tingkat langganan, topik, dan namespace. Jika memungkinkan, aplikasi harus memilih filter korelasi melalui filter melalui filter seperti SQL karena jauh lebih efisien dalam pemrosesan dan memiliki dampak yang lebih kecil pada throughput.

Tindakan

Dengan ketentuan filter SQL, Anda dapat menentukan tindakan yang dapat membuat anotasi pesan dengan menambahkan, menghapus, atau mengganti properti dan nilainya. Tindakan ini menggunakan ekspresi seperti SQL yang secara longgar bersandar pada sintaks pernyataan SQL UPDATE. Tindakan dilakukan pada pesan setelah dicocokkan dan sebelum pesan dipilih ke dalam langganan. Perubahan pada properti pesan bersifat pribadi untuk pesan yang disalin ke dalam langganan.

Pola penggunaan

Skenario penggunaan paling sederhana untuk sebuah topik adalah bahwa setiap langganan mendapatkan salinan setiap pesan yang dikirim ke sebuah topik, yang memungkinkan pola siaran.

Filter dan tindakan memungkinkan dua grup pola lebih lanjut: partisi dan perutean.

Partisi menggunakan filter untuk mendistribusikan pesan di beberapa langganan topik yang ada dengan cara yang dapat diprediksi dan saling eksklusif. Pola partisi digunakan ketika sistem diskalakan untuk menangani banyak konteks yang berbeda di kompartemen yang identik secara fungsional yang masing-masing mengikat subset data keseluruhan; misalnya, informasi profil pelanggan. Dengan partisi, penerbit mengirimkan pesan ke dalam topik tanpa memerlukan pengetahuan tentang model partisi. Pesan kemudian dipindahkan ke langganan yang benar yang dari situ pesan tersebut kemudian dapat diambil oleh handler pesan partisi.

Perutean menggunakan filter untuk mendistribusikan pesan di seluruh langganan topik dengan cara yang dapat diprediksi, tetapi belum tentu eksklusif. Bersamaan dengan fitur penerusan otomatis, filter topik dapat digunakan untuk membuat grafik perutean yang kompleks dalam namespace Service Bus untuk distribusi pesan dalam wilayah Azure. Dengan Azure Functions atau Azure Logic Apps yang bertindak sebagai jembatan antara namespace Azure Service Bus, Anda dapat membuat topologi global yang kompleks dengan integrasi langsung ke dalam aplikasi lini bisnis.

Contoh

Misalnya, lihat Contoh filter Service Bus.

Catatan

Karena portal Microsoft Azure sekarang mendukung fungsionalitas Service Bus Explorer, filter langganan dapat dibuat atau diedit dari portal.

Langkah berikutnya

Cobalah sampel dalam bahasa pilihan Anda untuk menjelajahi fitur Azure Service Bus.

Temukan sampel untuk pustaka klien .NET dan Java yang lebih lama di bawah ini: