У меня есть гнездо 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");
Кажется, чтоДИЛЕР может отправить сообщение в ROUTER, но ROUTER не может обновить ДИЛЕРА!
В следующих строках выдается исключение.
// 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);
У вас есть идеи, что случилось?