org.zeromq.ZMQException:错误65

时间:2019-02-26 03:16:43

标签: java sockets zeromq jeromq

我有一个ROUTER-DEALER ZMQ套接字连接。在某些非常特殊的情况下,我得到的是Errno 65,也就是当我尝试将数据从ROUTER发送到DEALER时。这是堆栈跟踪。

org.zeromq.ZMQException: Errno 65 : 
    at org.zeromq.ZMQ$Socket.mayRaise(ZMQ.java:2744)
    at org.zeromq.ZMQ$Socket.send(ZMQ.java:2592)
    at org.zeromq.ZMQ$Socket.sendMore(ZMQ.java:2567)
    at au.com.metrotrains.ptv.api.socket.ClientManager.sendToClient(ClientManager.java:225)
    at au.com.metrotrains.ptv.api.socket.ClientManager.sendHeartbeat(ClientManager.java:136)
    at au.com.metrotrains.ptv.api.socket.ClientManager.run(ClientManager.java:85)
    at java.lang.Thread.run(Thread.java:748)

我已经这样定义了我的ROUTER套接字:

// Router side
context = ZMQ.context(1);
receiver = context.socket(ZMQ.ROUTER);
receiver.setRouterMandatory(true);
receiver.setSendTimeOut(10000);
receiver.bind("tcp://*:5559");

还有我的经销商:

// Dealer side
this.clientSocket = context.socket(ZMQ.DEALER);
this.clientSocket.setProbeRouter(true);
this.monitorSocket = context.socket(ZMQ.PAIR);

this.clientSocket.connect("tcp://SERVER_IP:5559");

似乎DEALER可以向ROUTER发送消息,但ROUTER无法更新DEALER!

以下几行是引发异常的地方。

// Router side

// Client id is the first byte of first message received from dealer
receiver.sendMore(clientObject.getId());
receiver.sendMore(command);
receiver.send(data, 0);

你知道怎么了吗?

0 个答案:

没有答案