Pola routing RabbitMQ pada dasarnya sama dengan pola publish/subscribe, dengan perbedaan bahwa pola publish/subscribe meneruskan pesan ke semua antrean terikat, sedangkan pola routing meneruskan pesan ke antrean berdasarkan kecocokan routing.
Dari perspektif pemrograman tertentu, perbedaan antara pola routing dan pola publish/subscribe terletak pada jenis pertukaran yang digunakan. Pola routing menggunakan tipe Direct.
Diagram Arsitektur
Penjelasan:
- P mewakili produsen, C1 dan C2 mewakili konsumen, kotak merah mewakili antrean, dan X mewakili pertukaran.
- Tipe pertukaran adalah langsung.
- Logika penerusan pesan pertukaran langsung: membandingkan kunci Routing dalam pesan dengan kunci Routing yang terkait dengan semua Binding dari Pertukaran ini. Jika sama, pesan dikirim ke Antrean yang sesuai dengan Binding itu.
Sebagai contoh, dalam diagram di atas: Kunci routing untuk antrean Q1 adalah orange, dan kunci routing untuk antrean Q2 adalah hitam dan hijau. Ketika mengirim pesan, jika kunci routing pesan adalah orange, pesan tersebut akan diteruskan ke antrean Q1, dan jika kunci routing pesan adalah hitam atau hijau, pesan tersebut akan diteruskan ke antrean Q2.
Kasus Penggunaan
Pola routing merupakan perluasan dari pola publish/subscribe, sehingga kasus penggunaannya mirip dengan pola publish/subscribe, dengan perbedaan kemampuan untuk mengatur kondisi langganan pesan.
Misalnya: Di sebuah situs web e-commerce, terdapat empat gudang di Tiongkok Timur, Tiongkok Selatan, Tiongkok Utara, dan Tiongkok Barat Daya, masing-masing memiliki sistem manajemen gudang yang diterapkan. Ketika seorang pengguna membuat pesanan pembelian, gudang terdekat bertanggung jawab atas pengiriman.
Setelah seorang pengguna melakukan pemesanan dan pesan pesanan pembelian dihasilkan, kita ingin meneruskan pesan ke sistem manajemen gudang regional yang sesuai untuk diproses, yang dapat dicapai dengan menggunakan pola routing.
Kunci routing terikat untuk antrean pengiriman dari empat sistem manajemen gudang adalah sebagai berikut:
- Tiongkok Timur = timur
- Tiongkok Utara = utara
- Tiongkok Selatan = selatan
- Tiongkok Barat Daya = barat
Setelah seorang pengguna melakukan pemesanan, tentukan ke wilayah mana alamat pengguna tersebut, hitung kunci routing, dan kemudian kirim pesan pesanan dengan kunci routing. Pertukaran langsung RabbitMQ akan meneruskannya ke antrean yang sesuai.