2009-08-21 26 views
5

Tôi đang cố gắng thay thế hệ thống nhắn tin trong nhà nhỏ và đang phát xung quanh một chút với zmq. Tôi sẽ cần phát hiện người đọc chậm và khởi động/ngắt kết nối chúng - người đọc chậm có nghĩa là kích thước hàng đợi của người tiêu dùng cụ thể cao hơn một ngưỡng nhất định.Phát hiện người đọc chậm với zmq (zeromq)

Cho đến nay có vẻ như zmq chặn mọi người tiêu dùng nếu một trong số đó chậm một chút (đủ công bằng) - nhưng Tôi không thể tìm thấy bất kỳ cách nào để phát hiện người tiêu dùng chậm tiềm năng. Bất kỳ ai cũng có bất kỳ trải nghiệm nào với số điện thoại và cách có thể thực hiện điều này với zmq - hoặc có bất kỳ hệ thống nhắn tin nào ít người môi giới khác để thu thập lại?

+0

Vì vậy, tại sao sẽ không tốt hơn nếu tiếp tục nhận các tin nhắn gần đây nhất khi HWM đạt và thả các tin nhắn cũ hơn? Ít nhất tôi có thể nghĩ về nhiều tình huống mà tôi thích hành vi này. Tôi chắc chắn có thể cuộn hiệu ứng bản thân mình nhưng nó có vẻ như một lựa chọn hữu ích thường có. –

Trả lời

3

Kể từ zeromq-2.0.7, bạn có thể đặt tùy chọn ZMQ_HWM trên ổ cắm ZMQ_PUB để kiểm soát số lượng thư tối đa có thể được xếp hàng đợi cho người đăng ký. Khi đạt được điểm đánh dấu nước cao, tất cả các thông báo tiếp theo sẽ được đặt cho người đăng ký đó sẽ bị giảm cho đến khi kích thước hàng đợi giảm xuống dưới vạch dấu nước cao. Điều này hạn chế số lượng bộ nhớ dành riêng cho những gì bạn gọi là một người đọc chậm. Tuy nhiên, do thư viện ZeroMQ trưng ra các ổ cắm, không phải là các máy khách, không có cách nào để bạn xác định và buộc phải ngắt kết nối các máy khách không mong muốn mà không sửa đổi chính thư viện đó.

0

Có một phần trong Hướng dẫn ZeroMq về điều này, nó gợi ý triển khai mẫu gọi là "Suicidal Snail Pattern".

Về cơ bản, nó đảo ngược sự phụ thuộc và cố gắng thuyết phục người đăng ký chậm ngắt kết nối/tự tử bằng cách cung cấp cho họ cách phát hiện xem họ có trở thành người đọc chậm hay không.

Các vấn đề liên quan