[zeromq-dev] looking inside ZMQ queue
Bennie Kloosteman
bklooste at gmail.com
Sat Jul 28 00:46:02 CEST 2012
Like most systems ZeroMQ will just send the message to the transport when
the transport has received the message ( eg TCP/IP )it is removed from
ZeroMQ. There are no guarantees it has even been sent , yet alone that the
transport layer on the other side has the message. This is pretty standard
TCP/IP provides no guarantees the other service has received the message (
only the receiver TCp/IP stack) so you need to code this in your
application logic.
Also if you are persisting you do not need a light weight system ,
persistence is always slow and heavy , killing any performance ( Normally
non persistent messaging systems do at least 10* the messages / second to
persistent ones) . For persistence I would use a queue like MSMQ or the IBM
equivalent . Queues also help in knowing if the other side has received
it.
Ben
On Sat, Jul 28, 2012 at 2:27 AM, diffuser78 <diffuser78 at gmail.com> wrote:
> Sorry about my ignorance and laziness. I read this on the FAQ page:
>
>
> *How do I determine how many messages are in queue?*
>
> *This isn't possible. At any given time a message may be in the ØMQ
> sender queue, the sender's kernel buffer, on the wire, in the receiver's
> kernel buffer or in the receiver's ØMQ receiver queue. Furthermore, a ØMQ
> socket can bind and/or connect to many peers. Each peer may have different
> performance characteristics and therefore a different queue depth. Any
> "queue depth" number is almost certainly wrong, so rather than provide
> incorrect information the library avoids providing any view into this data.
> *
> I had a related question but not same as above.
>
> When ZMQ sent this message over TCP to the receivier and when receiver did
> a FIN/ACK indicating that it is ACK'ing to the finish of the tranmission of
> byte transfer, it indicates that the transport layer on the other end got
> the message. Does ZMQ keep tab of this ? When does sender ZMQ removes this
> message from its internal buffer. *I am only interested in knowing (in
> YES or NO) whether this message is in sender zmq buffer or not*. Is that
> possible ? If you can point me out, I can create a patch for it and send
> for review.
>
> Any thoughts are greatly appreciated.
>
> DJ
>
> On Fri, Jul 27, 2012 at 11:16 AM, Ian Barber <ian.barber at gmail.com> wrote:
>
>> On Fri, Jul 27, 2012 at 6:26 PM, diffuser78 <diffuser78 at gmail.com> wrote:
>> > What I want to know is that, ZMQ might have returned success upon
>> buffering
>> > the message. But what if message is still in the queue and has not been
>> > delivered to the receiver for some reasons (say slow receiver). Is
>> there a
>> > way I can peek into ZMQ queue to find out if my message M that I had
>> sent in
>> > a non blocking way was indeed sent on the wire successfully? My lib
>> needs to
>> > acknowledge to the app if there was an error after some time T for it to
>> > timeout on the message M.
>>
>> It could be lost in the network, or the other side could crash while
>> processing. The best way is to send an acknowledgement back from the
>> receiver (also using ZeroMQ) and use that to determine whether the
>> other side has received and processed it.
>>
>> Ian
>> _______________________________________________
>> 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/20120728/047f3c31/attachment.htm>
More information about the zeromq-dev
mailing list