Chúng tôi có một ứng dụng sẽ sử dụng RabbitMQ và có một số hàng đợi khác nhau để truyền các thông điệp giữa các tầng. Ban đầu, tôi đã lên kế hoạch sử dụng nhiều trao đổi trực tiếp, với một giao dịch cho mỗi loại thông báo, nhưng có vẻ như việc trao đổi chủ đề với hàng đợi bằng cách sử dụng các ràng buộc khóa định tuyến khác nhau sẽ đạt được điều tương tự.Trao đổi chủ đề và trao đổi trực tiếp trong RabbitMQ
Có một trao đổi duy nhất cũng có vẻ như nó sẽ dễ dàng hơn một chút để duy trì, nhưng tôi đã tự hỏi nếu có bất kỳ lợi ích (nếu có) làm nó một cách khác?
Lựa chọn 1, sử dụng nhiều trao đổi trực tiếp:
ExchangeA (type: direct)
-QueueA
ExchangeB (type: direct)
-QueueB
ExchangeC (type: direct)
-QueueC
Lựa chọn 2, sử dụng đơn trao đổi chủ đề:
Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")
Tôi đồng ý. Nhiều hàng đợi với các phím định tuyến thích hợp dễ quản lý hơn nhiều. Ưu điểm duy nhất của tùy chọn 1 mà lưu ý đến là nhiều trao đổi có thể được lưu trữ trên phần cứng riêng biệt do đó đạt được mở rộng theo chiều dọc. Tuy nhiên, nếu đá phần cứng của bạn thì bạn có thể không bao giờ cần phải đi theo con đường này. –
Tôi nghĩ rằng lợi thế của việc sử dụng Chủ đề là nếu nó xảy ra trong tương lai mà bạn cần phải gửi cùng một thông điệp đến nhiều hàng đợi trong trao đổi của bạn, lựa chọn 2 của bạn sẽ hấp dẫn hơn. – gigi2