我正在尝试REQ/REP
用 Java 实现 ZMQ 模型
我有一个服务器角色,在 5564 后运行,它充当回复者
ZMQ.Socket repSock = context.socket(ZMQ.REP);
我有一个客户端角色,在 5563 后运行
ZMQ.Socket syncclient = context.socket(ZMQ.REQ);
我在中间有一个代理服务器,它传递请求和响应
ZMQ.proxy(reqSocket, repSocket, null);
拥有代理的好处是我可以添加多个服务器
repSocket.connect("tcp://" + addr.getHostAddress() + ":" + port);
哪个工作正常。
现在,当我从代理中删除服务器节点时
repSocket.disconnect("tcp://" + addr.getHostAddress() + ":" + port);
客户端卡住了,因为已经发出请求并且REQ
-socket 等待响应。
所以这个过程停留在syncclient.recvStr()
for (int request_nbr = 0; request_nbr < (request_nbr + 1); request_nbr++) {
syncclient.send(str.getBytes(),0);
System.out.println("Send Dataaaa....... " );
String data = syncclient.recvStr(Charset.defaultCharset());
System.out.println(" here.. " +data);
request_nbr++;
}
我搜索并找不到跟踪REQ
-socket的方法
我需要两件事中的任何一件:
一种跟踪
Socket
我即将断开连接的-instance的方法,等待所有消息都被处理,这样syncclient.recvStr()
就不会被阻止一种重置
syncclient
-socket的方法,这样我就可以不间断地得到REQ/REP
响应