Cách tốt nhất để giữ hàng đợi bền vững và sự ràng buộc của nó là gì nhưng tạm ngừng người tiêu dùng?RabbitMQ tạm ngừng tiêu thụ hàng đợi
Trường hợp sử dụng là: Tôi muốn "cho phép sự cố" và ngừng xử lý thư nếu chúng tôi tiếp tục nhận được một loạt thư mà chúng tôi không thể xử lý (ví dụ: cơ sở dữ liệu bị lỗi hoặc vấn đề giản đồ) tiếp tục tổng hợp vào hàng đợi. Đó là cho phép xuất bản nhưng đình chỉ tiêu thụ.
tôi có thể nghĩ đến ba giải pháp:
- tôi có thể có tất cả những người tiêu dùng buộc phải xếp hàng liên tục từ chối các tin nhắn và tái đợi nhưng đây là loại tài nguyên lãng phí chưa kể tôi đã lập trình làm trên logic.
- tôi có thể gọi
basic.cancelConsumer
trên tất cả người tiêu dùng (xem dưới đây) - Hoặc về spring-amqp Tôi đoán tôi có thể gọi
shutdown
trên tất cả các SimpleMessageListenerContainers rằng đang bị ràng buộc vào hàng đợi.
#1
chúng tôi đã làm khi thư bị từ chối. Vấn đề là điều này kết thúc giống như một vòng lặp vô hạn trong khi thất bại và nếu bạn đăng nhập thất bại, thậm chí nhiều tài nguyên hơn sẽ bị lãng phí.
#3
có vẻ lý tưởng nhưng tôi phải biết một số cách biết về tất cả người nghe tin nhắn và sau đó thông báo cho họ tắt máy. Tôi cho rằng tôi có thể sử dụng trao đổi fanout để thông báo rằng hàng đợi cần được tạm ngưng. Tôi cảm thấy như RabbitMQ phải có một cái gì đó tích hợp cho logic này. Vấn đề khác là bạn có thể liên kết nhiều hàng đợi với một thùng chứa thư (không phải tất cả các hàng đợi có thể cần phải bị tạm ngưng).
Đối #2
Tôi biết tôi có thể cancel the consumer với nó consumerTag
nhưng câu hỏi (giả định đó là đúng cách để làm các việc trên) là nơi để tôi có được danh sách các consumerTag
s đến một hàng đợi?
Cảm ơn. Tôi biết cách tuyên bố hàng đợi trong thỏ như trên.Có vẻ như tôi sẽ phải tự quản lý người tiêu dùng của mình, đó là con đường tôi đã đi xuống. Sẽ tốt hơn nếu thỏ có quyền quản trị tùy chọn khôn ngoan để đình chỉ tiêu thụ hàng đợi. –
Điều duy nhất bạn có thể thực hiện từ kết nối là buộc đóng nó từ quản trị viên không thực sự là những gì bạn đang tìm kiếm –