>
>
>   RPC over channels<http://groups.google.com/group/clojure/t/3fde5c39fb97054b>
>
>
>
>
>    toberepla...@gmail.com Aug 01 10:09AM -0700
>
>     With
>    ZeroMQ, it might be a router that delivers your request to the machine
>    it
>    thinks is most likely to be able to handle the request. The system
>    serving
>    your requests could be a single process executing blocking calls to a
>    third-party http rest api, or it could be a network of load-balancing
>    machines.
>
>
...

>
>
>    There would be no intent to solve the messenger problem explicitly --
>    those
>    semantics are up to the user. By default, in the case of server death,
>    the
>    client side will just no longer receive responses on its
>    receive-channel.
>    In the case of a blocking call, this means that the client side will
>    hang.
>
>
Hung clients are bad.

Reliable request/reply gets hairy very quickly. The zeromq guide devotes a
long chapter to it.

The simplest (and least useful) approach they suggest is what they call the
Lazy Pirate Pattern.

The nutshell version:
The server listens on a robust socket that can handle multiple requests
from the same client (a Dealer, in 0mq terms). The client connects with
their brain-dead REQ socket, sends the request, then periodically polls for
a response. If it doesn't get a response before some time out, it drops the
socket and reconnects. After a certain number of retries, it gives up and
notifies the user that it's lost the server connection.

There's obviously a lot of black magic going on behind the scenes, but
that's a big part of the point of using an MQ.

I don't have any idea about how the other MQ's handle this sort of thing.

Just to try to keep this on-topic:
I haven't had a chance yet to experiment with how well core.async
cooperates with 0mq's basic strategy. It looks like there are a lot of
really cool possibilities, and I think that some of the projects I'm seeing
in this area are really exciting.

Regards,
James

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to