Martin,<br>This routing functionality is very useful to us.  What is the timeframe for official release?<br><br>Thanks,<br><br>Chad<br><br><div class="gmail_quote">On Mon, Apr 27, 2009 at 12:49 AM, Martin Sustrik <span dir="ltr"><<a href="mailto:sustrik@fastmq.com">sustrik@fastmq.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Alex,<br>
<div><div></div><div class="h5"><br>
> Studying the excellent design documentation. Wanted to get an<br>
> understandng how a conventional point-to-point conversation would be<br>
> mapped in 0MQ solution space with practicality left aside. Assuming a<br>
> number n of private (firewalled) clients each sending 'requests' to a<br>
> single public server and waiting for their appropriate 'responses', we<br>
> would have:<br>
><br>
> 1. Server with Global Queue Q-REQ<br>
> 2. Each Client would create a Local Exchange E-REQ<br>
> 3. Each Client would bind their E-REQ to Q-REQ to send their request.<br>
><br>
> It is the next steps on how the server will handle the respones to the<br>
> each of the clients that is not so clear. Would we have:-<br>
><br>
> 4. Server creates an instance of a Global Exchange E-RESi...n for each<br>
> client<br>
> 5. Each  Client would create a Local Queue Q-RES<br>
> 6. Each Client would bind their Q-RES to their corresponding E-RESx to<br>
> recieve their response.<br>
><br>
> Obviously, it feels like there should be a more elegant solution. Or is<br>
> it a case of trying to fit a square peg in a round hole.<br>
<br>
</div></div>You are right. That's the only solution at the moment. (0MQ was designed<br>
primarily for pub/sub model so req/rep is, well... ugly.<br>
<br>
However, the solution is being implemented right now. Actually, there's<br>
a "routing" branch in SVN that implements it, however, it has<br>
experimental status at the moment. For more info have a look here:<br>
<br>
<a href="http://lists.zeromq.org/pipermail/zeromq-dev/2009-April/000633.html" target="_blank">http://lists.zeromq.org/pipermail/zeromq-dev/2009-April/000633.html</a><br>
<br>
Once the routing is in place, req/rep is easy and efficient:<br>
<br>
1. Server declares a global queue and global exchange<br>
2. Each client has it's own unique identity (a string)<br>
3. Client binds it's local queue to the global exchange and its local<br>
exchange to the global queue.<br>
4. Client subscribes for messages tagged by it's identity.<br>
5. Client sends requests tagged by it's identity.<br>
6. Server reads requests and generates replies; it tags replies by the<br>
identity taken from the request.<br>
7. Client reads the replies (only the correct ones are delivered because<br>
of the subscription.<br>
<br>
Thoughts?<br>
Martin<br>
_______________________________________________<br>
zeromq-dev mailing list<br>
<a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>
<a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev" target="_blank">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a><br>
</blockquote></div><br><br clear="all"><br><br>