Tôi đang sử dụng khung POJO hướng thư của Spring (và DefaultMessageListenerContainer
nói riêng) để nghe một số hàng đợi và chủ đề.Làm cách nào để kiểm soát tốc độ mà Spring nhận được từ hàng đợi?
Trong trường hợp một hàng đợi đặc biệt, cần phải làm chậm tốc độ mà tại đó tôi rút hàng đợi, theo thứ tự của một tin nhắn sau mỗi năm phút. Việc xử lý thực sự của các tin nhắn là một hoạt động phụ thứ hai, nhưng tôi muốn người nghe ngồi nhàn rỗi trong một khoảng thời gian giữa các tin nhắn.
Tôi đã tạo một chút hack, nhưng nó được quyết định là tối ưu phụ: Điều tôi đã làm là đặt đồng thời tối đa thành 1 và thêm Thread.sleep(..)
sau khi xử lý từng thư. Thay vào đó, tôi muốn tìm cách sử dụng DefaultMessageListenerContainer
để chờ giữa các lần nhận, thay vì khiến trình xử lý thực hiện việc chờ trong quá trình xử lý tin nhắn.
Tôi đã xem xét nếu có một ScheduledExecutor
có thể hữu ích, nhưng tôi nhận ra rằng việc điều chỉnh sẽ cần phải được thực hiện khi tác vụ được tạo ra. Có lẽ một số phương pháp từ DefaultMessageListenerContainer
mà tôi có thể ghi đè để thực hiện những gì tôi sau?
Trừ khi tôi nhầm, tôi nghĩ bạn đang đề cập đến 'receiveTimout'. Thuộc tính này cố gắng nhận từ một hàng đợi trong một thời gian xác định trước khi phá hủy 'MessageConsumer'. – Ray
oh, vâng, bạn nói đúng, tôi đã về receiveTimeout ( – ruslan
Bạn nên chỉnh sửa câu trả lời nếu nó không chính xác. – Gray