Mẫu định tuyến RabbitMQ cơ bản cũng tương tự mẫu xuất bản/đăng ký, với sự khác biệt là mẫu xuất bản/đăng ký chuyển tiếp tin nhắn đến tất cả các hàng đợi được ràng buộc, trong khi mẫu định tuyến chuyển tiếp tin nhắn đến hàng đợi dựa trên điều kiện định tuyến.
Từ góc độ lập trình cụ thể, sự khác biệt giữa mẫu định tuyến và mẫu xuất bản/đăng ký nằm ở loại sàn được sử dụng. Mẫu định tuyến sử dụng loại Direct.
Sơ đồ Kiến trúc
Giải thích:
- P đại diện cho người sản xuất, C1 và C2 đại diện cho người tiêu thụ, các ô màu đỏ đại diện cho hàng đợi, và X đại diện cho sàn.
- Loại sàn là direct.
- Logic chuyển tiếp tin nhắn của sàn direct: so sánh Khóa định tuyến trong tin nhắn với các Khóa định tuyến liên kết với tất cả Cấu nối của Sàn này. Nếu chúng bằng nhau, tin nhắn sẽ được gửi đến Hàng đợi tương ứng với Cấu nối đó.
Ví dụ, trong sơ đồ trên: Khóa định tuyến cho hàng đợi Q1 là màu cam, và khóa định tuyến cho hàng đợi Q2 là màu đen và màu xanh lá cây. Khi gửi một tin nhắn, nếu khóa định tuyến của tin nhắn là màu cam, nó sẽ được chuyển tiếp đến hàng đợi Q1, và nếu khóa định tuyến của tin nhắn là màu đen hoặc màu xanh lá cây, nó sẽ được chuyển tiếp đến hàng đợi Q2.
Các Trường Hợp Sử Dụng
Mẫu định tuyến là mở rộng của mẫu xuất bản/đăng ký, vì vậy các trường hợp sử dụng tương tự như mẫu xuất bản/đăng ký, với sự khác biệt là khả năng thiết lập điều kiện đăng ký tin nhắn.
Ví dụ: Trong một trang web thương mại điện tử, có bốn kho hàng ở Đông, Nam, Bắc và Tây Nam Trung Quốc, mỗi kho hàng có một bộ hệ thống quản lý kho hàng được triển khai. Khi một người dùng tạo đơn đặt hàng, kho hàng gần nhất sẽ chịu trách nhiệm vận chuyển.
Sau khi người dùng đặt hàng và tạo một tin nhắn đơn đặt hàng, chúng tôi muốn chuyển tiếp tin nhắn đến hệ thống quản lý kho hàng khu vực tương ứng để xử lý, điều này có thể được thực hiện bằng cách sử dụng mẫu định tuyến.
Liên kết khóa định tuyến cho các hàng đợi giao hàng của bốn hệ thống quản lý kho hàng vùng miền như sau:
- Đông Trung Quốc = east
- Bắc Trung Quốc = north
- Nam Trung Quốc = south
- Tây Nam Trung Quốc = west
Sau khi người dùng đặt hàng, xác định khu vực mà địa chỉ của người dùng thuộc về, tính toán khóa định tuyến, và sau đó gửi tin nhắn đơn hàng với khóa định tuyến. Sàn direct của RabbitMQ sẽ chuyển tiếp nó đến hàng đợi tương ứng.