Bạn cần đăng ký tất cả các hàng đợi mà thư đã được định tuyến và sử dụng chúng với mã định dạng. Ví dụ: nếu bạn xuất bản để trao đổi chủ đề bằng "kiểm tra" làm khóa định tuyến và có 3 hàng liên tục đăng ký "thử nghiệm", bạn sẽ cần phải tiêu thụ ba hàng đợi đó. Nó có thể là tốt hơn để thêm một hàng đợi mà quá trình tiêu dùng của bạn cũng sẽ lắng nghe quá, và nói với họ để bỏ qua những tin nhắn.
Một giải pháp thay thế, vì bạn đang sử dụng RabbitMQ, là viết một plugin trao đổi tùy chỉnh sẽ chấp nhận một số hướng dẫn của ban nhạc để xóa tất cả các hàng đợi. Ví dụ, bạn có thể có trao đổi đó đọc một tiêu đề tin nhắn đặc biệt mà nói với nó để xóa tất cả các hàng đợi mà thông điệp này được mệnh. Điều này đòi hỏi phải viết mã Erlang, nhưng có 4 loại trao đổi khác nhau được triển khai, do đó bạn chỉ cần sao chép mã tương tự nhất và viết mã cho bahaviours mới. Nếu bạn chỉ sử dụng tiêu đề tùy chỉnh cho điều này, thì nội dung của thư có thể là thông điệp bình thường cho người tiêu dùng.
Tóm lại:
1) nhà xuất bản cần tiêu thụ những thông điệp riêng của mình 2) nhà xuất bản có thể gửi một thông điệp đặc biệt trong một hàng đợi đặc biệt để nói với người tiêu dùng để bỏ qua thông điệp 3) nhà xuất bản có thể gửi một thông điệp đặc biệt cho một trao đổi tùy chỉnh sẽ xóa bất kỳ tin nhắn hiện có nào từ hàng đợi trước khi gửi thông điệp đặc biệt này đến người tiêu dùng.
Nguồn
2011-07-18 05:16:16
Không, điều này giải quyết một vấn đề khác. Tôi không cần phải từ chối một thông điệp ở phía người tiêu dùng, tôi muốn hủy giao hàng của nó từ phía nhà sản xuất, để thông điệp không đến được với người tiêu dùng như thể nó chưa bao giờ tồn tại. Trong vấn đề của tôi, người tiêu dùng không thể quyết định liệu một tin nhắn có nên bị từ chối hay không. – jkff
Nếu thông báo thành công được xuất bản và bạn cần phải loại bỏ chúng khỏi hàng đợi đã biết, sau đó đăng ký ot nó và tiêu thụ chúng trong nhà sản xuất. –