[zeromq-dev] User Guide [WAS: OpenStack cloud API]

gonzalo diethelm gdiethelm at dcv.cl
Fri Aug 6 00:48:06 CEST 2010

> > > OK, so your lock has gone and the page is still empty.  I'm able
> > > make anonymous edits, have posted your notes like that.
> >
> > Oh, I thought I had managed to save my edits, now I see it was
> > And now when I try to edit that page, it says I already hold a lock.
> The
> > Force Lock Removal button does nothing, the others do.
> I have just tried te entre the 0MQ site with IE 8 and it give a big
> JS error... Actually, three of them:
> OZONE is undefined, line 28
> Syntax error, line 1
> WIKIDOT is undefined, line 78.

Well, I will just go ahead and type the rest of my comments here.
Pieter, please feel free to use them, ignore them, put them up on the
talk page, etc.

# At the end of ZMQ_PUB / ZMQ_SUB discussion, I would say //and can
subscribe to prefixes to receive a subset of the messages sent//.
# When mentioning the ipc:// transport, you refer to mq; I am not sure
what that refers to exactly; generic message queues? IBM's MQ?. Also, it
might be a good idea to mention //This transport is, for now, restricted
to Unix only; in particular, there is no current implementation for
# On the code samples (in Python) I would always use double quotes for
strings. Also, on the REQ/REP server you need an extra space before the
second double quote: //print "GOT BACK ", repr(s.recv())//.
# On the list of problems associated to using raw TCP, the last item
should be split into six separate items (each starting with //How//).
And maybe the last one, //How do we work on IPv6//, should be coalesced
with the previous entry, //What if we need to use a different network
transport//, since they talk about similar things.
# I would say //It is arguably only worth doing for large applications,
built by several teams of people...// (changed to built).
# On the list of features for 0MQ, the second item should be the first
on the list so that they will appear in the same order as the list of
problems using raw TCP: //It handles I/O asynchronously...//.
# The C++ examples should be changed to C. This will make it much easier
to follow and will be consistent with the pieces of documentation shown
here and there on the document. So I would say //Here is the client,
converted to C://.
# My last name is //Diethelm//, not //Diethlem//. :-)
# When discussing the socket API, I would say //Configuring sockets by
setting options and checking them if necessary// (no comma, no
mentioning of paranoid tendencies...).
# When discussing Plugging sockets onto the topology, I would say //Thus
we say that we "bind a socket to an endpoint" and "connect a socket to
an endpoint", the endpoint being...//.
# I would say //They may express a certain "messaging pattern"...//
(added MAY).
# When discussing Using sockets to carry data, on the third bullet I
would say //0MQ sockets can, depending...// (plural for sockets). And a
little below, //So writing a message to a socket may send it to one or
many other places at once...// (added one or). And a little below,
//otherwise the I/O thread will sometimes find itself writing
overwritten or unallocated garbage// (added overwritten or).
# When discussing Messages and Zero-copy, I would say //Basically, 0MQ
messages are blobs any size from zero upwards// (word order). A little
below, //Here are the basic ground rules for using 0MQ messages, first
without doing zero copy:// (split groundrules, added first). A little
below, //This object has a pointer to the data// (added the).
# I would say //When you create the message you also pass a function
that will be called by 0MQ to free the block of data// (added be called
by 0MQ to).
# There is an error in a snippet of code, it should be:
//memcpy(zmq_msg_data(&message), buffer, 1000);// or something like that
(missing the &message parameter).
# I would say //It uses lock-free techniques for talking between
threads, so there are never locks, waits, semaphores or deadlocks.//
(split lockfree, replaced last comma with or).
# I would say //Keep it simple: in the request-replay pattern, services
bind and clients connect// (got rid of "and stupid", got rid of final
# Almost at the end, I would say "Well, you need to reconfigure and
restart the clients, so that each will connect now to six service
endpoints// (added final sentence to clarify).

That's it for now. Thanks and best regards.

Gonzalo Diethelm

More information about the zeromq-dev mailing list