Messages
A ZeroMQ message is a discrete unit of data passed between applications or
components of the same application. From the point of view of ZeroMQ itself
messages are considered to be opaque binary data.
On the wire, ZeroMQ messages are blobs of any size from zero
upwards that fit in memory. You do your own serialization using protocol
buffers, msgpack, JSON, or whatever else your applications need to speak. It’s
wise to choose a data representation that is portable, but you can make your own
decisions about trade-offs.
The simplest ZeroMQ message consist of one frame (also called message part).
Frames are the basic wire format for ZeroMQ messages. A frame is a
length-specified block of data. The length can be zero upwards. ZeroMQ
guarantees to deliver all the parts (one or more) for a message, or none of
them. This allows you to send or receive a list of frames as a single
on-the-wire message.
A message (single or multipart) must fit in memory. If you want to send files of
arbitrary sizes, you should break them into pieces and send each piece as
separate single-part messages. Using multipart data will not reduce memory
consumption.
Working with strings
Passing data as strings is usually the easiest way to get a communication going
as serialization is rather straightforward. For ZeroMQ we established the rule
that strings are length-specified and are sent on the wire without a trailing
null.
The following function sends a string to a socket where the string’s length
equals frame’s length.
static void
s_send_string (void *socket, const char *string) {
zmq_send (socket, strdup(string), strlen(string), 0);
}
To read a string from a socket we have to provide a buffer and its length. The
zmq_recv method write as much data into the buffer as possible. If there’s
more data it will get discarded. We use the returned frame’s size to set
appropriate null-terminator and return a duplicate of the retrieved string.
// Receive string from socket and convert into C string
// Chops string at 255 chars, if it's longer
static char *
s_recv_string (void *socket) {
char buffer [256];
int size = zmq_recv (socket, buffer, 255, 0);
if (size == -1)
return NULL;
if (size > 255)
size = 255;
buffer [size] = \0;
/* use strndup(buffer, sizeof(buffer)-1) in *nix */
return strdup (buffer);
}
The following functions sends a C string to a socket as a single-frame message
where the string’s length equals frame’s length.
zstr_send (socket, "HELLO");
Another option is to send a formatted string, similar to printf.
zstr_sendf (socket, "%s-%d", "HELLO", 1);
To read a string from a socket simply call the zstr_recv
function.
char *string = zstr_recv (socket);
Example
messages_strings_send_recv
is missing for
zmqpp
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/zmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
cppzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/cppzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
azmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/azmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
czmqpp
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/czmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
fbzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/fbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
The following function sends a string to a socket.
socket.SendFrame("Hello");
To read a string from a socket simply call the ReceiveFrameString
function.
string str = socket.ReceiveFrameString();
Example
messages_strings_send_recv
is missing for
clrzmq4
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/csharp/clrzmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
dartzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/dart/dartzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
Chumak
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/chumak
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
ezmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/ezmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
erlang-czmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/erlang-czmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
FsNetMQ
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fsnetmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
fszmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fszmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
zmq4
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/zmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
goczmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/goczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
zeromq4-haskell
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/haskell/zeromq4-haskell
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
The following functions sends a string to a socket as a single-frame message
where the string’s length equals frame’s length.
To read a string from a socket simply call the recv
function.
String hello = socket.recvStr()
If you need more control over the frame itself you use the ZFrame class. The
following snippet shows you how to create a frame from a string and send a
frame.
ZFrame stringFrame = new ZFrame("HELLO");
stringFrame.send(socket, 0);
The read a frame from a socket and return a ZFrame object call the static
recvFrame function on the ZFrame class. If the content is a string you can
retrive it by the getString method supplying the charset used to serialize it.
By default ZMQ.CHARSET is used for all operations that serialze and deserialize
strings.
ZFrame stringFrame = ZFrame.recvFrame(socket);
String hello = stringFrame.getString(ZMQ.CHARSET);
Example
messages_strings_send_recv
is missing for
JZMQ
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
jczmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
zeromqjs
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/nodejs/zeromqjs
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
perlzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/perl/perlzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
Pyzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/python/pyzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
rbzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/ruby/rbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
rust-zmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/rust/rust-zmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Example
messages_strings_send_recv
is missing for
zzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/zig/zzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv.md
$example_dir/messages_strings_send_recv.md
Because we utilise the frame’s length to reflect the string’s length we can send
mulitple strings by putting each of them into a seperate frame.
The following function sends an array of string to a socket. The ZMQ_SNDMORE
flag tells ZeroMQ to postpone sending until all frames are ready.
static void
s_send_strings (void *socket, const char[] *strings, int no_of_strings) {
for (index = 0; index < no_of_strings; index++) {
int FLAG = (index + 1) == no_of_strings ? 0 : ZMQ_SNDMORE;
zmq_send (socket, strdup(strings[index]), strlen(strings[index]), FLAG);
}
}
To retrieve a string frames from a multi-part messages we must use the
ZMQ_RCVMORE zmq_getsockopt()
option after calling zmq_recv()
to determine
if there are further parts to receive.
char *strings[25];
int rcvmore;
size_t option_len = sizeof (int);
int index = 0;
do {
strings[index++] = s_recv_string (socket);
zmq_getsockopt (socket, ZMQ_RCVMORE, &rcvmore, &option_len);
} while (rcvmore);
Sending multiple string frames is possible using the zstr_sendm
function. This
function will postpone the actually sending of the message until the last frame
is ready.
zstr_sendm (socket, "HELLO");
zstr_sendm (socket, "beautiful");
zstr_send (socket, "WORLD!");
Or do the same even simpler with the zstr_sendx
function. Last parameter must
be NULL!
zstr_sendx (socket, "HELLO", "beautiful", "WORLD!", NULL);
If you like working with message objects rather than building up the message by
sending multiple frames. You can use the zmsg
class.
zmsg_t *strings = zmsg_new ();
zmsg_addstr ("HELLO");
zmsg_addstr ("beautiful");
zmsg_addstr ("WORLD");
zmsg_send (&strings, socket);
To receive a series of string frames use the zstr_recvx
function. Each string
is allocated and filled with string data!
char *hello, beautiful, world;
zstr_recvx (socket, &hello, &beautiful, &world, NULL);
Or in case you’re working with zmsg
:
zmsg_t *strings = zmsg_recv (socket);
char *hello = zmsg_popstr (strings);
char *beautiful = zmsg_popstr (strings);
char *world = zmsg_popstr (strings);
Example
messages_strings_send_recv_multi
is missing for
zmqpp
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/zmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
cppzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/cppzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
azmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/azmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
czmqpp
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/czmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
fbzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/fbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Sending multiple string frames is possible using the SendMoreFrame
function. This
function will postpone the actually sending of the message until the last frame
is ready.
socket.SendMoreFrame("HELLO")
.SendMoreFrame("beautiful")
.SendMore("WORLD!");
To receive a series of strings call ReceiveMultipartStrings
function. Which returns a list of strings.
List<string> strings = socket.ReceiveMultipartStrings();
Example
messages_strings_send_recv_multi
is missing for
clrzmq4
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/csharp/clrzmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
dartzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/dart/dartzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
Chumak
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/chumak
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
ezmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/ezmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
erlang-czmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/erlang-czmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
FsNetMQ
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fsnetmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
fszmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fszmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
zmq4
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/zmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
goczmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/goczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
zeromq4-haskell
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/haskell/zeromq4-haskell
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Sending multiple string frames in one message is possible using the sendMore
method. This method will postpone the actually sending of the message until the
last frame is sent.
socket.sendMore (socket, "HELLO");
socket.sendMore (socket, "beautiful");
socket.send (socket, "WORLD!");
Instead of using the socket’s send API you can construct a multi-frame message
using the ZMsg class.
ZMsg *strings = new ZMsg();
strings.add("HELLO");
strings.add("beautiful");
strings.add("WORLD");
strings.send(socket);
To receive a series of string frames call the recvStr
function multiple times.
String hello = socket.recvStr();
String beautiful = socket.recvStr();
String world = socket.recvStr();
In order to retrive the whole message in one call use the static recvMsg method
of the ZMsg class.
ZMsg strings = ZMsg.recvMsg(socket);
String hello = strings.popString();
String beautiful = strings.popString();
String world = strings.popString();
Example
messages_strings_send_recv_multi
is missing for
JZMQ
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
jczmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
zeromqjs
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/nodejs/zeromqjs
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
perlzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/perl/perlzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
Pyzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/python/pyzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
rbzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/ruby/rbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
rust-zmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/rust/rust-zmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
Example
messages_strings_send_recv_multi
is missing for
zzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/zig/zzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_strings_send_recv_multi.md
$example_dir/messages_strings_send_recv_multi.md
More
Find out more about working with messages:
- Working with multi-part messages: zmsg
- Working with single message frames:
zframe,
- Work with strings: zstr
Example
messages_functions
is missing for
zmqpp
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/zmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
cppzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/cppzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
azmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/azmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
czmqpp
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/czmqpp
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
fbzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/cpp/fbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
clrzmq4
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/csharp/clrzmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
dartzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/dart/dartzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
Chumak
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/chumak
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
ezmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/ezmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
erlang-czmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/erlang/erlang-czmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
FsNetMQ
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fsnetmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
fszmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/fsharp/fszmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
zmq4
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/zmq4
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
goczmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/go/goczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
zeromq4-haskell
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/haskell/zeromq4-haskell
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
JZMQ
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
jczmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/java/jczmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
zeromqjs
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/nodejs/zeromqjs
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
perlzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/perl/perlzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
Pyzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/python/pyzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
rbzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/ruby/rbzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
rust-zmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/rust/rust-zmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md
Example
messages_functions
is missing for
zzmq
. Would you like to contribute it? Then follow the steps below:
git clone https://github.com/zeromq/zeromq.org
example_dir=content/docs/examples/zig/zzmq
cd zeromq.org && mkdir -p $example_dir
[ -s $example_dir/index.md ] || cat >$example_dir/index.md <<'EOF'
---
headless: true
---
EOF
cp archetypes/examples/messages_functions.md
$example_dir/messages_functions.md