<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><font class="Apple-style-span" face="Courier">Toby,</font><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">If the queue structure is fixed then the STOMP adapter&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">need not create them, and so it might be sensible to&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">create them beforehand, and use STOMP destinations of&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">/amq/queue/&lt;name&gt; as I suggested. &nbsp;</font></div><div><font class="Apple-style-span" face="Courier"><br></font></div><div><font class="Apple-style-span" face="Courier">Instead of using STOMP to create them, create some&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">shared queues using a richer protocol, say with the&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">Java Client, or the Erlang Client, or even Python&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">(gasp). The queue headers are then arbitrary and the&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">STOMP applications will only have to SEND and&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">SUBSCRIBE to the /amq/destinations and not be&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">concerned with any operational characteristics of the&nbsp;</font></div><div><font class="Apple-style-span" face="Courier">queues.</font></div><div><span class="Apple-style-span" style="font-family: Courier; "><br></span></div><div><span class="Apple-style-span" style="font-family: Courier; ">The (slight) downside is that the queues are managed</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">separately from the main apps, and you might have some</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">more operational steps at restart/backup/upgrade</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">events to consider. I'm morally certain</span><span class="Apple-style-span" style="font-family: Courier; ">&nbsp;you&nbsp;</span><span class="Apple-style-span" style="font-family: Courier; ">already&nbsp;</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">have a</span><span class="Apple-style-span" style="font-family: Courier; ">&nbsp;</span><span class="Apple-style-span" style="font-family: Courier; ">place to put&nbsp;</span><span class="Apple-style-span" style="font-family: Courier; ">those extra steps.</span></div><div><span class="Apple-style-span" style="font-family: Courier; ">&nbsp;</span></div><div><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Georgia; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Georgia; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Georgia; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Georgia; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Georgia; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 12px; ">Steve Powell &nbsp;</span><span class="Apple-style-span" style="font-size: 11px; ">(<i>a happy bunny</i>)</span></font></div></div><div><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 11px; "><div style="font-family: Helvetica; font-size: 12px; "><i><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; ">----------some definitions from the SPD----------</span></font></i></div><div style="font-family: Helvetica; font-size: 12px; "><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; "><b>Rigatoni</b>&nbsp;</span><font class="Apple-style-span" size="2"><span class="Apple-style-span" style="font-size: 10px; "><i>n.</i></span></font><span class="Apple-style-span" style="font-size: 10px; ">&nbsp;A prime-ministerial grin.</span></font></div><div style="font-family: Helvetica; font-size: 12px; "><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; "><b>Nigella</b>&nbsp;<i>n.</i>&nbsp;The next bottle-size up from a&nbsp;</span></font><span class="Apple-style-span" style="line-height: 15px; "><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; ">Nebuchadnezzar</span></font></span><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; ">.</span></font></div><div style="font-family: Helvetica; font-size: 12px; "><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; "><b>Homily</b>&nbsp;</span></font><font class="Apple-style-span" face="Georgia" size="2"><span class="Apple-style-span" style="font-size: 10px; "><i>adv.</i>&nbsp;Rather like a frenchman.</span></font></div></span></font></div></div></span></div></span></div></span></span></span>
</div>
<br><div><div>On 21 Oct 2011, at 08:24, Toby Corkindale wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On 21/10/11 01:53, Steve Powell wrote:<br><blockquote type="cite">Hi Toby,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Unfortunately it is not possible to set ha policy or ttl<br></blockquote><blockquote type="cite">settings on a rabbit STOMP-created queue. [1] [2]<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">However, it is possible to send to and subscribe from<br></blockquote><blockquote type="cite">a queue created in AMQP using /amq/queue/&lt;name&gt;<br></blockquote><blockquote type="cite">destinations inSTOMP. These queues can have any of the<br></blockquote><blockquote type="cite">rabbit-supported properties.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">We currently have an enhancement under discussion that<br></blockquote><blockquote type="cite">puts these headers on SUBSCRIBE or SEND, so that the<br></blockquote><blockquote type="cite">STOMP adapter can create the right sort of queue; but<br></blockquote><blockquote type="cite">we are not sure what to do if the header values disagree<br></blockquote><blockquote type="cite">on two commands referring to the "same" queue.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The STOMP protocol design makes it hard to define queue<br></blockquote><blockquote type="cite">properties, as opposed to message properties, since<br></blockquote><blockquote type="cite">queue-creation is implicit and conditional. It would be<br></blockquote><blockquote type="cite">a surprise if one application sets a queue property and<br></blockquote><blockquote type="cite">another removes it or resets it (or fails if the property<br></blockquote><blockquote type="cite">is different).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">A description of your application which requires this<br></blockquote><blockquote type="cite">would help us with future design.<br></blockquote><br>Hi Steve,<br>It's nothing terribly complex.<br><br>There are several applications which generate task requests; they generate hundreds of these very rapidly, but only from time to time.<br><br>The tasks go through several stages. Each stage has some application servers that are subscribed to a queue to process precisely one request, then enqueue a new message for the next stage.<br><br>RabbitMQ works to hold the queue of pending tasks at each stage. Each stage has a separate queue. The backlog of messages surges up to a few hundred, then back down to zero as they get processed.<br><br>It all works quite nicely, but if I power off one of the two nodes in our rabbitmq cluster, then there's a 50% chance we have just lost all the messages in some queues. The messages are all marked as persistent, so as long as the machine recovers, they'll be safe.. but there's still a pause until you fix the machine.<br><br>So I was thinking the mirrored queues would work well for us - if a machine dies, then it's OK, messages will still carry on being processed out of the backlog.<br><br>Cheers,<br>Toby<br></div></blockquote></div><br></div></body></html>