[zeromq-dev] REQ/REP with multiple REP workers question
Jasper Jaspers
jaspers01995 at gmail.com
Fri Apr 10 22:27:28 CEST 2020
I'm testing the REQ->REP pattern with multiple reply workers to test
concurrent behavior.
Have 3 applications, 2 clients and 1 server, running on same node.
Each, which is essentially the client from the zmq guide, has a REQ socket
that connects to the server (tcp://127.0.0.1:nnnn). They simply loop
sending messages and waiting for the reply and timing how long it takes to
get the reply.
The server, which is essentially the mtserver from the zmq guide, has an
external ROUTER that binds to (tcp://127.0.0.1:*). Internally it has a
DEALER with n workers, where each worker is on its own thread and has a REQ
socket that connects locally to DEALER. The ROUTER and DEALER use the
zmq_proxy to map external messages to internal messages. Each REP worker
receives a message and sleeps for some number of seconds to simulate work
time and then sends a reply.
In my test I have two REP workers configured on the server. I figured one
for each client to get concurrent behavior. Worker1 sleeps for 1 sec and
Worker2 sleeps for 2 seconds.
Based on this I would expect concurrent behavior and the clients to show
that messages take either 1 or 2 seconds to complete. When I start the
first client I see messages take either 1 or 2 seconds based on which
worker processed the message, which I expect. Then when I start the 2nd
client I see, on both clients, that some messages take 3 seconds to
complete. Looking further, all of the messages that take 3 sec to complete
come from Worker2. Looks like only the first message processed by Worker2
after the second client starts completes in 2 seconds. My logs show that
when Worker2 takes 3 seconds to complete it's receiving the client's
message 1 sec after the client sent it. This accounts for the additional
time but I'm not understand why this is happening. Is this the correct
behavior?
I also re-ran the test where each Worker sleeps for 2 secs. In this case
the clients showed that all work, from each Worker, completed in 2 secs
which I expected.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20200410/56767691/attachment.htm>
More information about the zeromq-dev
mailing list