Alexis, <br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Can you clarify what you mean by &quot;failover of session state&quot; please?<br>
I am assuming you mean that when a node dies, then another node can<br>
&#39;take over&#39; from it, without loss of any state that the first node has<br>
committed (to some other node and/or persistent store), and that the<br>
second node can &#39;take over&#39; in some sense &#39;faster&#39; than recovery by<br>
restarting the first node from disk would.</blockquote><div><br>More or less.� I&#39;m personally not that concerned with the timeliness of recovery for committed messages.� I&#39;m mostly concerned with any messages being dropped by the system because no bindings matching a particular message&#39;s routing key existed in the exchange at the time of the enqueue command (because the one node which contained the queue which matched that routing key has suffered a disaster).� To go further I really want the ability to define something like &quot;failover bindings&quot; (e.g. create queue Q on node A as master and node B for failover)� in the exchange such that if delivery to to a queue &quot;Q&quot; on node &quot;A&quot; fails then the exchange will declare that node &quot;B&quot; is the new master for queue &quot;Q&quot; and all subsequent routing will be adjusted.� It seems that if the persister were using mnesia to record session state (queue data) and one could define &quot;failover bindings&quot; like I mentioned above then the exchange could failover a queue to a secondary node transparently to all producers and consumers in the system, save for the ones that were directly connected to the node which suffered the disaster.<br>
�</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> �I ask because this case is<br>
not quite the same as &#39;exactly once&#39; delivery.</blockquote><div><br>Yes, I was just referring to my belief that if I want to eliminate this single point of failure I would need to create redundant queues on separate nodes and have some kind of out-of-band mechanism to guard against duplicate processing (or that I would need to make sure that all downstream operations were idempotent).<br>
�</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
Cheers,<br>
<br>
alexis<br>
<div><div></div><div class="h5"><br>
<br>
<br>
<br>
<br>
On Sun, Jul 26, 2009 at 6:45 PM, charles<br>
woerner&lt;<a href="mailto:charleswoerner.lists@gmail.com">charleswoerner.lists@gmail.com</a>&gt; wrote:<br>
&gt; Thanks Arvind.� That seems to confirm our belief that rabbitmq doesn&#39;t<br>
&gt; handle failover of session state at the moment.� So in the case of competing<br>
&gt; consumers taking messages from a rabbitmq broker cluster it sounds like<br>
&gt; once-and-only-once delivery is somewhat up to the application to implement<br>
&gt; by arranging for each message to be delivered to redundant queues (ie. 2<br>
&gt; separate queues with similar bindings residing on different hosts), then<br>
&gt; coordinate among your consumers to ensure once-and-only-once delivery using<br>
&gt; a database or simply to make your workflow idempotent with respect to the<br>
&gt; duplicate messages.<br>
&gt;<br>
&gt; Ideally, I&#39;d like my broker cluster to handle this.� I&#39;m looking into apache<br>
&gt; qpid as it seems to be more mature with respect to availability.� The main<br>
&gt; downside with rabbitmq for me right now is the lack of at least an option<br>
&gt; for session state replication.� It sounds like a future release of rabbitmq<br>
&gt; with pluggable persisters will make distributed session state possible via<br>
&gt; mnesia.<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; rabbitmq-discuss mailing list<br>
&gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt; <a href="http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
&gt;<br>
&gt;<br>
</blockquote></div><br>