Jiri<div><br></div><div>You say that &quot;<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); ">Some clients send requests to one broker, some to the other&quot;.  </span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); ">Does this mean that one client publisher can send messages (requests) to both brokers, in such a way that a pair of messages may arrive out of order if one is sent to each broker? </span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); ">If the answer is no, then I think my answer stands, because causal order will be preserved even if messages are lost.  That is: messages that arrive successfully, will not be out of order with each other.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); ">If the answer is yes, then I am not sure how you can recover global ordering without imposing it at the publisher using sequence numbers at the app level.  </span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); ">Does this make sense?</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; color: rgb(34, 34, 34); ">alexis</span></div>
<div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br></span></font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br>
</span></font><br><div class="gmail_quote">On Thu, Sep 2, 2010 at 9:46 PM, Jiri Krutil <span dir="ltr">&lt;<a href="mailto:jiri@krutil.com">jiri@krutil.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Alexis<br>
<br>
Sorry I probably didn&#39;t express myself well.<br>
<br>
We don&#39;t plan a primary and secondary broker, but a pair of brokers that are both active at the same time. A load balancer divides client connections to these brokers. A request queue with the same name exists on both brokers, but with different contents. Some clients send requests to one broker, some to the other. Our back-end server listens to both queues, processes requests and sends each response to an exclusive client queue on the broker from where the request came.<br>

<br>
Ideally this would be transparent to the clients, because the brokers would be hidden by a virtual IP address. Of course it can&#39;t be transparent to the back-end server, which needs to talk to both brokers at the same time.<br>

<br>
So (a) is correct, but (b) not.<br>
<br>
Hope that makes it a bit clearer...<br>
<br>
Cheers<br>
Jiri<div><div></div><div class="h5"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Jiri<br>
<br>
That answered my questions.  Now, as I understood your example:<br>
<br>
a. you don&#39;t mind messages being lost<br>
*and*<br>
b. you don&#39;t use the secondary until after the primary has failed.<br>
<br>
Note that if consumption is completely &#39;fire and forget&#39; then it is possible that a message from the primary may *arrive* after a message from the secondary.  But this can happen whether you use sequence numbers or not.<br>

<br>
So if the primary broker fails, why not just forget all undelivered messages?  Consumers will know that any message consumed from the secondary must be later in *all* orderings than any message consumed from the primary.  So, additional sequence numbering is not necessary.<br>

<br>
alexis<br>
</blockquote>
</div></div></blockquote></div><br></div>