[zeromq-dev] Timeout REQ-REP

Mario Steinhoff steinhoff.mario at gmail.com
Tue Mar 15 13:12:27 CET 2016


Is there a reason why you don't use JZMQ or JeroMQ?

I am not sure what you are trying to achieve here but your code Works
As Designed™.

You are doing a zstr_recv() which itself uses zmsg_recv() without any
flags to read messages from a socket.

http://api.zeromq.org/4-2:zmq-msg-recv
> If there are no message parts available on the specified socket the zmq_msg_recv() function shall block until the request can be satisfied.

Afaics neither zstr nor zmsg implement a timeout for now.

You could use zmsg_msg_recv() and pass ZMQ_DONTWAIT and implement your
own timeout handling.


2016-03-15 8:43 GMT+01:00 Bachmair Florian - flexSolution GmbH
<florian.bachmair at flexsolution.eu>:
> Hi!
>
> Is there a way to get a Timeout for a Request?
> If I send a Request, it "hangs" till the other side Responses. If the
> other Side is not up, I never get a response.
> I would like to detect this on the Request side. Is that possible?
>
>
> my current request code is:
>
> JNIEXPORT jstring JNICALL core_JNI_1zeromq_request(
>          JNIEnv *env, jobject object, jstring address, jstring timestamp,
>          jstring sender, jstring command, jstring message) {
>      const char* addr = (*env)->GetStringUTFChars(env, address, 0);
>      const char* ts = (*env)->GetStringUTFChars(env, timestamp, 0);
>      const char* s = (*env)->GetStringUTFChars(env, sender, 0);
>      const char* cmd = (*env)->GetStringUTFChars(env, command, 0);
>      const char* msg = (*env)->GetStringUTFChars(env, message, 0);
>
>
>      fflush(stdout);
>      void *req = zsocket_new(context, ZMQ_REQ);
>      int rc = zsocket_connect(req, "%s", addr);
>
>      assert(rc == 0);
>      s_sendmore(req, ts);
>      s_sendmore(req, s);
>      s_sendmore(req, cmd);
>      s_send(req, msg);
>
>      char* reply = zstr_recv(req);
>
>      zsocket_destroy(context, req);
>
>      (*env)->ReleaseStringUTFChars(env, timestamp, ts);
>      (*env)->ReleaseStringUTFChars(env, sender, s);
>      (*env)->ReleaseStringUTFChars(env, message, msg);
>
>      jstring ret = (*env)->NewStringUTF(env, reply);
>      return ret;
> }
>
>
> Thank you
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev



-- 
Mario Steinhoff
https://github.com/msteinhoff
https://twitter.com/msteinhofff
T: +49 173 7265158
In der Gelpe 79
42349 Wuppertal



More information about the zeromq-dev mailing list