[zeromq-dev] Peering2 port - no threads, no IPC
Pieter Hintjens
ph at imatix.com
Sat Apr 9 10:47:36 CEST 2011
On Sat, Apr 9, 2011 at 4:26 AM, Gregg Irwin <gregg at pointillistic.com> wrote:
> I'm still working through the guide, and have peering2 almost working.
> My language (REBOL) doesn't support threads, and I'm on Windows so no
> 0MQ IPC scheme either; hence I've made the client and worker threads
> into processes, and am using tcp instead of ipc. I've successfully
> done lruqueue and peering1 this way already.
Nice. Is there a way to start the multiple processes from a single
source file? That will make the REBOL examples compatible with the
Guide.
> What happens is that the brokers get the READY messages from workers,
> and the IDs look like they're correct in the worker-queue. The client
> HELLO messages also come into the broker fine. The broker then sends
> the message to a worker, but the worker never seems to get it. i.e.
> the worker sends READY, then blocks on recv. If I dump the message
> that's going to the worker, the correct worker ID is there, then an
> empty string, then the client ID, an empty string, and finally the
> body.
When I get frustrated at router sockets silently dropping messages I
go into the 0MQ code and add a printf. That is around xrep.cpp:197.
This will at least tell you whether or not there's a problem with the
identity/address frame.
Then, you want to make sure the address matches the worker's address,
hasn't been mangled in some form, and that you're using a router
socket and not a dealer by mistake.
If all that fails, do a sanity check with a minimal case just to prove
router sockets work for you.
-Pieter
More information about the zeromq-dev
mailing list