Không có hành vi defai afaik cho trường hợp của bạn. Bạn có thể tạo một plugin hoặc bạn có thể dựa vào logic khách hàng là mục đích của câu trả lời của tôi.
Điều quan trọng để biết rằng hàng đợi RabbitMQ khai báo/ràng buộc là là một Declare đợi idempotent operation
, tạo nếu phương pháp needed.This tạo hoặc kiểm tra một hàng đợi. Khi tạo hàng đợi mới, máy khách có thể chỉ định các thuộc tính khác nhau kiểm soát độ bền của hàng đợi và nội dung của nó, và mức độ chia sẻ cho hàng đợi .
giả thuyết 1: hàng đợi không thể bị xóa hoặc hàng đợi có thể bị xóa nhưng khách hàng sẽ biết điều đó, các thiết lập hàng đợi có thể phù hợp trong bộ nhớ
Mỗi khách hàng duy trì một tập hợp các hàng đợi. Trước khi gửi thư, khách hàng sẽ kiểm tra xem tập hợp có chứa hàng đợi hay không. Nếu không khai báo và liên kết hàng đợi và đặt hàng đợi vào tập hợp.
Tại bootstrap, tập hàng đợi có thể được khởi tạo với các hàng đợi hiện sử dụng ví dụ như HTTP API (ví dụ. Một java client)
Làm thế nào để làm điều đó phụ thuộc vào khách hàng RabbitMQ của bạn. Ví dụ sử dụng spring-amqp, bạn có thể mở rộng và ghi đè RabbitTemplate#doSend
giả thuyết 2: hàng đợi có thể bị xóa và khách hàng sẽ không biết
Theo đề nghị của GeekChick bạn có thể đăng ký một ReturnListener
.Tất cả các thông điệp phải được gửi với mandatory flag
giả thuyết 3: Tôi không nhớ chi phí khai báo hàng đợi/bind *
Bạn luôn, trước khi gửi một tin nhắn, kê khai và ràng buộc hàng đợi. AFAIK chi phí, một khi được tạo ra, nên ít nhiều bằng với dấu chân mạng + tra cứu bản đồ.
Nguồn
2015-04-14 04:35:38
Trong JMS, tôi sẽ không biết - nếu là .NET, tôi khuyên bạn nên sử dụng gói HareDU làm điểm bắt đầu để kiểm tra xem hàng đợi đã có mặt chưa. https://github.com/ahives/HareDu – Paul
Tôi không muốn thực hiện một nhấn API rõ ràng để kiểm tra xem hàng đợi tồn tại hay không nhưng tôi muốn kiểm tra xem có cách nào để sửa đổi hành vi mặc định của trao đổi để tạo ra một xếp hàng nếu chưa có. – Rahul
@rahulroc, http://stackoverflow.com/questions/21265242/dynamic-queue-creation-with-rabbitmq điều này có thể giúp bạn –