Re: [zeromq-dev] Client hang on recv

2014-10-01 Thread Stephen Riesenberg
Sorry to reply to this late, but did you resolve your issue? I noticed in your 
code snippet, you are using two different instances of ZMQ.Context, one in your 
Router/Dealer queue, a different one in your Worker. I believe you would need 
to use the same context in order for inproc to work. That explains why 
switching to tcp works.

On Sep 23, 2014, at 1:16 PM, Mohit Anchlia  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.bind("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

___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


Re: [zeromq-dev] Client hang on recv

2014-09-24 Thread Mohit Anchlia
Actually I took these dependency from the maven project published by
zeromq. All the examples that are published in github are using this
dependency.
On Wed, Sep 24, 2014 at 12:39 PM, Mohit Anchlia 
wrote:

> I see, does it matter which one I chose?
>
> On Wed, Sep 24, 2014 at 12:35 PM, Trevor Bernard  > wrote:
>
>> You shouldn't include both as a dependency -- the results would not be
>> deterministic. I would choose either jeromq or jzmq.
>>
>> On Wed, Sep 24, 2014 at 4:32 PM, Mohit Anchlia 
>> wrote:
>> > This is my java dependency:
>> >
>> > 
>> >
>> > 
>> >
>> > org.zeromq
>> >
>> > jeromq
>> >
>> > 0.3.4
>> >
>> > 
>> >
>> > 
>> >
>> > 
>> >
>> > 
>> >
>> > org.zeromq
>> >
>> > jzmq
>> >
>> > 3.1.0
>> >
>> > 
>> >
>> > 
>> >
>> >
>> > On Wed, Sep 24, 2014 at 12:12 PM, Pieter Hintjens 
>> wrote:
>> >>
>> >> What version of ZeroMQ are you using?
>> >>
>> >> On Wed, Sep 24, 2014 at 8:17 PM, Mohit Anchlia > >
>> >> wrote:
>> >> > 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;
>> >> >> 

Re: [zeromq-dev] Client hang on recv

2014-09-24 Thread Mohit Anchlia
I see, does it matter which one I chose?
On Wed, Sep 24, 2014 at 12:35 PM, Trevor Bernard 
wrote:

> You shouldn't include both as a dependency -- the results would not be
> deterministic. I would choose either jeromq or jzmq.
>
> On Wed, Sep 24, 2014 at 4:32 PM, Mohit Anchlia 
> wrote:
> > This is my java dependency:
> >
> > 
> >
> > 
> >
> > org.zeromq
> >
> > jeromq
> >
> > 0.3.4
> >
> > 
> >
> > 
> >
> > 
> >
> > 
> >
> > org.zeromq
> >
> > jzmq
> >
> > 3.1.0
> >
> > 
> >
> > 
> >
> >
> > On Wed, Sep 24, 2014 at 12:12 PM, Pieter Hintjens  wrote:
> >>
> >> What version of ZeroMQ are you using?
> >>
> >> On Wed, Sep 24, 2014 at 8:17 PM, Mohit Anchlia 
> >> wrote:
> >> > 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
> >> >
> >> ___
> >> zeromq-dev mailing list
> >> zeromq-dev@lists.zeromq.org
> >> http://lists.zeromq.org/mailma

Re: [zeromq-dev] Client hang on recv

2014-09-24 Thread Trevor Bernard
You shouldn't include both as a dependency -- the results would not be
deterministic. I would choose either jeromq or jzmq.

On Wed, Sep 24, 2014 at 4:32 PM, Mohit Anchlia  wrote:
> This is my java dependency:
>
> 
>
> 
>
> org.zeromq
>
> jeromq
>
> 0.3.4
>
> 
>
> 
>
> 
>
> 
>
> org.zeromq
>
> jzmq
>
> 3.1.0
>
> 
>
> 
>
>
> On Wed, Sep 24, 2014 at 12:12 PM, Pieter Hintjens  wrote:
>>
>> What version of ZeroMQ are you using?
>>
>> On Wed, Sep 24, 2014 at 8:17 PM, Mohit Anchlia 
>> wrote:
>> > 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 
>> > 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
>> >
>> ___
>> zeromq-dev mailing list
>> zeromq-dev@lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
> ___
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


Re: [zeromq-dev] Client hang on recv

2014-09-24 Thread Mohit Anchlia
This is my java dependency:





org.zeromq

*jeromq*

0.3.4









org.zeromq

*jzmq*

3.1.0





On Wed, Sep 24, 2014 at 12:12 PM, Pieter Hintjens  wrote:

> What version of ZeroMQ are you using?
>
> On Wed, Sep 24, 2014 at 8:17 PM, Mohit Anchlia 
> wrote:
> > 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 
> > 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
> >
> ___
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


Re: [zeromq-dev] Client hang on recv

2014-09-24 Thread Pieter Hintjens
What version of ZeroMQ are you using?

On Wed, Sep 24, 2014 at 8:17 PM, Mohit Anchlia  wrote:
> 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 
> 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
>
___
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


Re: [zeromq-dev] Client hang on recv

2014-09-24 Thread Mohit Anchlia
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 
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


[zeromq-dev] Client hang on recv

2014-09-23 Thread Mohit Anchlia
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.bind("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