org.zeromq.ZMQException: Errno 65 - PullRequest
       48

org.zeromq.ZMQException: Errno 65

0 голосов
/ 26 февраля 2019

У меня есть гнездо 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);

У вас есть идеи, что случилось?

...