2013-10-23 61 views
2

什么是正确的zeromq消息模式来选择实现服务器,它需要处理N-客户端之间的双向通信(客户端可以发出请求,服务器可以发出通知,这必须是可靠的。因此pub/sub在这里不工作)? 我做了什么: 服务器有REP处理客户端请求,REQ发送通知给客户端,SUB获取一些事件。 客户端REQ发出请求到服务器,REP从服务器接收通知,SUB得到一些事件 然后: 服务器轮询POOLIN在REP和SUB插口 客户端轮询POOLIN在REP和SUB插口结合多个req套接字和pub的zeromq轮询器

一旦轮询& POOLIN,REP套接字调用recv,比做一些处理,比发送。 尽快轮询& POOLIN,SUB套接字调用recv。

该模式工作不稳定。如果我在数据发送之前通过一个REQ套接字调用POLLIN轮询,直到REQ套接字得到回复,模式正在工作,但这有点奇怪。我错过了什么吗?

回答

1

你真的需要阻止REQ/REP套接字吗?我建议要与DEALER在客户端上完全异步,检查:

https://stackoverflow.com/a/19417116/791406

希望它能帮助,

+0

我想REQ-REP是有帮助的,因为阻塞调用允许简单的代码路径。经销商路由器代码将成为一个事件驱动。感谢你的回答。我会发布结果。 – user2910794

+0

是的,但zeromq是关于事件的!阻止REQ/REP的问题是,如果出现问题,您的应用程序将无限期地挂起。始终以异步方式发送,并在接收时至少以超时轮询进行轮询 – raffian