Chế độ chủ đề của RabbitMQ tương tự như chế độ định tuyến, nhưng khác biệt ở chỗ chế độ chủ đề hỗ trợ khớp mờ dấu hoa thị, trong khi chế độ định tuyến chỉ hỗ trợ khớp chính xác.
Sơ đồ kiến trúc
Giải thích:
- P đại diện cho nhà sản xuất, X đại diện cho sàn giao dịch, và các Q1, Q2 màu đỏ đại diện cho hàng đợi, C1, C2 đại diện cho người tiêu dùng.
- Loại sàn giao dịch là chủ đề.
- Logic chuyển tiếp tin nhắn của sàn giao dịch chủ đề: Nó khớp Routing key trong tin nhắn với các Routing keys liên kết với tất cả các Ràng buộc của Sàn giao dịch thông qua khớp mờ, và nếu có khớp, nó gửi tin nhắn đến hàng đợi liên kết.
Mẹo: Sự khác biệt giữa chế độ chủ đề và chế độ trực tiếp nằm ở việc khớp của Routing key hỗ trợ dấu hoa thị khớp mờ, mọi thứ khác đều giống nhau.
Dấu hoa thị được hỗ trợ bởi chế độ chủ đề như sau:
-
#
(dấu thăng) khớp một hoặc nhiều từ -
*
(dấu hoa thị) chỉ khớp một từ
Ví dụ:
Routing key liên kết với hàng đợi Q1 = *.cam.*
Routing key liên kết với hàng đợi Q2 = *.*.chuột
và lười.#
Nếu routing key của tin nhắn là "nhanh.cam.chuột", nó khớp với cả hai hàng đợi Q1 và Q2.
Mẹo: Nếu routing key không khớp với bất kỳ hàng đợi nào, tin nhắn sẽ bị loại bỏ. Nếu routing key trống, nó hoạt động giống như chế độ fanout và chuyển tiếp tin nhắn trực tiếp đến tất cả các hàng đợi.
Trường hợp sử dụng
Tương tự như chế độ định tuyến, sự khác biệt nằm ở tính linh hoạt của điều kiện đăng ký, cụ thể là các quy tắc khớp linh hoạt hơn cho Routing key.