When I change from inproc:// to tcp:// everything seem to work. Not sure why it's not working, perhaps order in which things are started? I am starting in this order:
1) Bring up router/dealer -> This also connects router to dealer through ZMQQueue. Router is tcp and dealer is inproc 2) Bring up workter and connect to inproc When I change everything to tcp:// it works with exact same code and sequence of operations On Tue, Sep 23, 2014 at 11:16 AM, Mohit Anchlia <mohitanch...@gmail.com> wrote: > I am trying to use router/dealer with dealer using inproc://, when I run > my program the router seems to bind to the port (netstat), client seem to > connect successfully but the recv after send hangs. Worker on the other > hand doesn't see the request come in from router/dealer. Here is the > snippet of my code, not sure what is wrong here: > > Router/Dealer: > > log.info("Starting ZeroMQ Router on port=" + port); > // Prepare our context and socket > ZMQ.Context context = ZMQ.context(1); > // Socket to talk to clients > ZMQ.Socket clients = context.socket(ZMQ.ROUTER); > clients.bind("tcp://*:" + port); > > // Socket to talk to workers > ZMQ.Socket workers = context.socket(ZMQ.DEALER); > workers.bind("inproc://workers"); > > // Connect work threads to client threads via a queue > ZMQQueue queue = new ZMQQueue(context, clients, workers); > new Thread(queue).start(); > > log.info("Exiting ZeroMQ"); > > Worker: > > public JMSZMQRepServer() { > this.context = ZMQ.context(1); > socket = context.socket(ZMQ.REP); > socket.connect("inproc://workers"); > log.info("Server bind inproc"); > } > > @Override > public void run() { > while (true) { > // Wait for next request from client (C string) > try { > log.info("Start"); > String request = socket.recvStr(0); > // String request = new String(GZIPUtils.gunzip(socket.recv())); > // Do some 'work' > String response = null; > response = doWork(request); > // Send reply back to client (C string) > socket.send(response, 0); > } catch (ZMQException e) { > if (e.getErrorCode() == ZMQ.Error.ETERM.getCode()) { > log.warn("Exiting ", e.getMessage()); > break; > } else { > log.error("Unable to send request", e); > } > } catch (Exception e) { > // TODO Auto-generated catch block > log.error("Error in gunzip", e); > } > } > if (null != socket) { > log.info("Socket closed"); > socket.close(); > } > } > > Client: > > public JMSZMQClient() { > context = ZMQ.context(1); > requester = context.socket(ZMQ.REQ); > requester.connect("inproc://workers"); > log.info("Connected to in proc workers"); > } > public String processRequest(String json) throws DataStoreException { > String result = null; > long latency = System.currentTimeMillis(); > // byte [] bJson = GZIPUtils.gzip(json.getBytes()); > log.info("Send request to zMQ server"); > // requester.send(bJson); > requester.send(json, 0); > result = requester.recvStr(0); > log.info("ZeroMQ client took=" > + (System.currentTimeMillis() - latency)); > MessageUtil.validateZMQMessage(result); > return result; > } > > > >
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev