Mode topik pada RabbitMQ mirip dengan mode routing, namun perbedaannya terletak pada kemampuan pencocokan rute mode topik yang mendukung pencocokan samar dengan wildcard, sedangkan mode routing hanya mendukung pencocokan tepat.
Diagram arsitektur
Penjelasan:
- P mewakili produsen, X mewakili pertukaran, dan Q1, Q2 merujuk pada antrian-antiran yang berwarna merah, sedangkan C1 dan C2 merujuk pada konsumen-konsumennya.
- Jenis pertukaran adalah topik.
- Logika penerusan pesan pertukaran topik: Ini mencocokkan kunci routing dalam pesan dengan kunci-kunci routing yang terkait dengan semua ikatan Pertukaran melalui pencocokan samar, dan jika ada korespondensi, pesan tersebut dikirim ke Antrian yang terikat.
Tip: Perbedaan antara mode topik dan mode langsung terletak pada apakah pencocokan kunci routing mendukung pencocokan samar dengan wildcard, selebihnya sama.
Wildcard yang didukung oleh topik adalah sebagai berikut:
-
#
(tanda pagar) cocok dengan satu kata atau lebih -
*
(bintang) hanya cocok dengan satu kata
Contohnya:
Kunci routing terikat pada antrian Q1 = *.orange.*
Kunci routing terikat pada antrian Q2 = *.*.rabbit
dan lazy.#
Jika kunci routing pesan adalah "quick.orange.rabbit", maka korespondensi terjadi pada kedua antrian Q1 dan Q2.
Tip: Jika kunci routing tidak cocok dengan antrian mana pun, pesan akan dibuang. Jika kunci routing kosong, ia akan berfungsi sama seperti mode fanout dan langsung meneruskan pesan ke semua antrian.
Studi kasus
Seperti mode routing, perbedaannya terletak pada fleksibilitas kondisi langganan, khususnya aturan pencocokan yang lebih fleksibel untuk kunci routing.