Are there timelines on when such a mirrored queue implementation might make it out the door?<div><br clear="all">Mark Steele<br>Bering Media Inc.<br><div>+1 (416) 888-1009</div><br>
<br><br><div class="gmail_quote">On Fri, Jun 17, 2011 at 2:25 PM, Joseph Marlin <span dir="ltr">&lt;<a href="mailto:joseph.a.marlin@gmail.com">joseph.a.marlin@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

See the attachment on this message for details on high availability<br>
implementation coming soon that will change the ways queues on<br>
clusters work signficantly:<br>
<br>
<a href="http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-June/013304.html" target="_blank">http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-June/013304.html</a><br>
<br>
On Jun 17, 1:05 pm, Mark Steele &lt;<a href="mailto:mste...@beringmedia.com">mste...@beringmedia.com</a>&gt; wrote:<br>
&gt; Hi Jon,<br>
&gt;<br>
&gt; Rabbit will not scale to a large throughput of messages published to a<br>
&gt; single queue as they all get delivered to a single node.<br>
&gt;<br>
&gt; Here&#39;s one way to do it:<br>
&gt;<br>
&gt; <a href="http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-March/01200." target="_blank">http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2011-March/01200.</a>..<br>
&gt;<br>
&gt; The gist is:<br>
&gt;<br>
&gt;    - Rabbit doesn&#39;t scale on per queue basis. The answer: create many<br>
&gt;    queues, bound to the same exchange<br>
&gt;    - Use a direct exchange, which will rely on routing keys to decide which<br>
&gt;    queue to deliver a message to<br>
&gt;    - Pre-declare the queues on the nodes inside your cluster, bind them<br>
&gt;    using a known set of routing keys (eg: queueA with routing keys 1-100 on<br>
&gt;    server1, queueB with routing keys 101-200 on server2, etc...). Assuming<br>
&gt;    durable queues here...<br>
&gt;    - Have your publisher randomly pick a routing key and node to connect to<br>
&gt;    (or use a load balancer)<br>
&gt;    - Use the mandatory flag to ensure your message reaches a queue, if it<br>
&gt;    fails re-publish using a different randomly picked routing key<br>
&gt;    - Have your consumers connect to all queues<br>
&gt;<br>
&gt; Using the technique described above, you can load balance incoming TCP<br>
&gt; connections to a cluster of rabbit nodes. Load will get distributed based on<br>
&gt; the randomly picked routing keys used by the publishers.<br>
&gt;<br>
&gt; The problem with this is that HA is not addressed.<br>
&gt;<br>
&gt; Mark Steele<br>
&gt; Bering Media Inc.+1 (416) 888-1009<br>
&gt;<br>
&gt; On Fri, Jun 17, 2011 at 11:51 AM, Jon Charette &lt;<a href="mailto:jon.chare...@gmail.com">jon.chare...@gmail.com</a>&gt;wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt; Greetings,<br>
&gt;<br>
&gt; &gt; We are investigating using RabbitMQ in a clustered environment to provide<br>
&gt; &gt; load balancing and some fault tolerance for an application currently under<br>
&gt; &gt; development.<br>
&gt;<br>
&gt; &gt; I&#39;m not a developer, I&#39;m the lead of our Operations team.  Clustering seems<br>
&gt; &gt; the best approach for my team as it simplifies our application configuration<br>
&gt; &gt; significantly.<br>
&gt;<br>
&gt; &gt; My question is this.  Our Dev team has told me that since clustering only<br>
&gt; &gt; provides node fault tolerance, it doesn&#39;t add any additional gain to our<br>
&gt; &gt; design.  Specifically, they mentioned that since a message queue only<br>
&gt; &gt; resides on one node,<br>
&gt;<br>
&gt; &gt; &quot;All data/state required for the operation of a RabbitMQ broker is<br>
&gt; &gt; replicated across all nodes, for reliability and scaling, with full ACID<br>
&gt; &gt; properties. An exception to this are message queues, which currently only<br>
&gt; &gt; reside on the node that created them, though they are visible and reachable<br>
&gt; &gt; from all nodes. Future releases of RabbitMQ will introduce migration and<br>
&gt; &gt; replication of message queues.&quot;<br>
&gt;<br>
&gt; &gt; clustering doesn&#39;t allow us to scale based on the numbers of messages being<br>
&gt; &gt; sent to one queue.  Is this true, or does the cluster distribute messages<br>
&gt; &gt; sent to the same message queue throughout off of its member nodes?  My<br>
&gt; &gt; assumption based on the documentation is that this is the case, but if a<br>
&gt; &gt; node is lost, messages that were currently residing on that node are lost as<br>
&gt; &gt; well due to no fault tolerance.<br>
&gt;<br>
&gt; &gt; Thanks much.<br>
&gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; rabbitmq-discuss mailing list<br>
&gt; &gt; <a href="mailto:rabbitmq-disc...@lists.rabbitmq.com">rabbitmq-disc...@lists.rabbitmq.com</a><br>
&gt; &gt;<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; rabbitmq-discuss mailing list<br>
&gt; rabbitmq-disc...@lists.rabbitmq.comhttps://<a href="http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
_______________________________________________<br>
rabbitmq-discuss mailing list<br>
<a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
</blockquote></div><br></div>