[zeromq-dev] ZMQ_LINGER doesn't seem to affect zmq_close and zmq_term

crocket crockabiscuit at gmail.com
Wed Mar 13 04:01:28 CET 2013


The test case below was written for jeromq 0.3.0-SNAPSHOT.
If I set linger to 10ms, I get frequent message losses.
But if I set linger to 100ms, I don't get a message loss.

It seems to be the problem with laview-zmq which seems to ignore linger.

import org.zeromq.ZContext;
import org.zeromq.ZMQ;
import org.zeromq.ZMsg;
import org.zeromq.ZThread;


public class ZMQLingerTest {
public static void main(String[] args) throws InterruptedException {
ZContext ctx=new ZContext();
ZMQ.Socket pipe=ZThread.fork(ctx, new MsgRecv());
 pipe.recv();
 Integer i=1;
try {
while (true) {
ZMQ.Socket sendMsg=ctx.createSocket(ZMQ.PUSH);
sendMsg.connect("tcp://127.0.0.1:5200");
sendMsg.setLinger(100);
 ZMsg msg = new ZMsg();
msg.add("ohai" + i);
msg.add("hello");
i += 1;

msg.send(sendMsg);
sendMsg.close();
 Thread.sleep(10);
}
} finally {
System.out.println("CLOSING...");
pipe.send("CLOSE");
pipe.recv();
}
}
}

import org.zeromq.ZContext;
import org.zeromq.ZFrame;
import org.zeromq.ZMQ;
import org.zeromq.ZMsg;
import org.zeromq.ZThread;
import org.zeromq.ZMQ.Socket;
import org.zeromq.ZMQ.Poller;

public class MsgRecv implements ZThread.IAttachedRunnable {
public MsgRecv() {
}

@Override
public void run(Object[] args, ZContext ctx, Socket pipe) {
Poller poller=new Poller(2);
ZMQ.Socket recvMsg=ctx.createSocket(ZMQ.PULL);
recvMsg.bind("tcp://*:5200");
 poller.register(pipe, Poller.POLLIN);
poller.register(recvMsg, Poller.POLLIN);
 pipe.send("START");
 while (true) {
poller.poll();
 // pipe
if (poller.pollin(0)) {
if (pipe.recvStr().equals("CLOSE")) {
pipe.send("OK");
break;
}
}
 if(poller.pollin(1))
{
ZMsg msg=ZMsg.recvMsg(recvMsg);
System.out.println("------------------------------------");
for (ZFrame frame : msg) {
System.out.println(frame);
}
System.out.println("------------------------------------");
System.out.println();
}
}
}
}



On Tue, Mar 12, 2013 at 7:35 PM, Pieter Hintjens <ph at imatix.com> wrote:

> Hi Yoshino,
>
> Can you provide a minimal test case?
>
> Thanks
> Pieter
>
> On Tue, Mar 12, 2013 at 10:18 AM, crocket <crockabiscuit at gmail.com> wrote:
> > I have been using labview-zmq, which is LabVIEW binding for libzmq.
> >
> > I used various socket types, and I explain what I got.
> >
> > With ZMQ_LINGER set to 100, I sent a message and closed the socket and
> the
> > context immediately.
> >
> > zmq_close and zmq_term both didn't wait for as long as ZMQ_LINGER.
> >
> > I had to invoke something like sleep(100) before zmq_close.
> >
> > Is there anything I don't understand?
> >
> >
> > _______________________________________________
> > zeromq-dev mailing list
> > zeromq-dev at lists.zeromq.org
> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> >
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20130313/7221829c/attachment.htm>


More information about the zeromq-dev mailing list