2011-11-21 34 views
5

Tôi đang triển khai hệ thống nhắn tin trong đó các chương trình bên ngoài được gọi là tác nhân có thể giao tiếp thông qua nhà sản xuất ZeroMq. Vì vậy, mỗi khi một sự kiện quan tâm xảy ra, đại lý sẽ gửi một tin nhắn đến ZeroMq.Mẫu đường ống ZeroMQ

Tôi quan tâm đến việc triển khai điều này bằng cách sử dụng mẫu đường ống.

Tôi đã tìm thấy một số ví dụ (Trình quản lý kết quả công nhân thông gió), nhưng thành phần thông gió tạo điểm cuối để chấp nhận kết nối từ nhân viên, và sau đó gửi tất cả các tin nhắn theo lô.

Kịch bản của tôi hoàn toàn khác. Các "đại lý" kết nối mỗi khi một sự kiện là cần thiết để được gửi - nó không chờ đợi kết nối từ các công nhân, vì vậy tôi tự hỏi nếu điều này là có thể? Ngoài ra, thực tế quan trọng là tin nhắn phải được xử lý theo thứ tự chúng được gửi đi.

Trả lời

2

Bạn nên trộn lẫn các mẫu để đạt được giải pháp của mình. Tôi nghĩ rằng nó phải là một specialized broker mà instantiates REP đại lý thu cho các đại lý REQ thực. Những người thu hộ đại lý nên chăm sóc đặt hàng trước khi giao tiếp với hệ thống.

+0

Đây có thể là một giải pháp tốt đẹp, ngoại trừ tôi không cần phải có thông báo hai chiều tại đây. Các đại lý không cần phải biết nếu tin nhắn đã được gửi đến các nhà môi giới - nó chỉ có để gửi nó. – Nedo

+0

Tôi không chắc chắn, nhưng [AFAIK] (http://en.wiktionary.org/wiki/AFAIK), không có khái niệm về ổ cắm unidirecional trong ZeroMQ. Nếu các đại lý REQ của bạn không cần phải kết nối với nhà môi giới, chỉ cần đóng socket mỗi khi một sự kiện được gửi đi. –

1

REQ-REP là khi bạn muốn có một chuyến đi khứ hồi. Có vẻ như bạn muốn có PUB-SUB. Thiết lập một SUB với một liên kết tại một cổng nổi tiếng, sau đó có các máy khách kết nối với cổng đó và đưa ra một PUB.