<font face="trebuchet ms,sans-serif">Hi Oren,</font><div><font face="trebuchet ms,sans-serif"><br></font></div><div><font face="trebuchet ms,sans-serif">RabbitMQ has some mechanisms to handle this, but you'd first need to describe what you want to do with the faulty message. </font></div>
<div><ul><li><span style="font-family:'trebuchet ms',sans-serif">IF you know the message is going to bring down the other processors why aren't you just acking (or nacking or rejecting with requeue=false) it before crashing the first processor? I am assuming this is an option, it may not be. </span></li>
<li><span style="font-family:'trebuchet ms',sans-serif">If you cannot even modify the part of the code which interacts with RabbitMQ in the processors you could enable the autoack option, and each message will be considered acked as soon as it leaves the broker network stack. Beware that this relaxes the reliability constraints you may have, introducing the chance of loosing messages</span></li>
</ul></div><div><br><div class="gmail_quote">On Sun, Jan 15, 2012 at 10:16, Oren Shochat <span dir="ltr"><<a href="mailto:orenshome@gmail.com">orenshome@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><p class="MsoNormal" style="text-align:left;direction:ltr">I
have a RabbitMQ on Amazon load balancing between N processors that do heavy
image processing algorithms (running 1-8 min on an 8 core computer) . I'm using
RabbitMQ fair dispatch and message acknowledgement to make sure the Algorithm requests
are distributed fairly amongst the processors. </p>
<p class="MsoNormal" style="text-align:left;direction:ltr">However
once in a while I get a message that causes the processor to crash. RabbitMQ of
course (since no ack received and connection terminated) makes sure the message
goes to the next processor which also crashes because processors share the same
code. <span> </span>Soon all the processors are down.
They go up again, but the faulty message stays in the system until I get the
alarms and purges the RabbitMQ queue. </p>
<p class="MsoNormal" style="text-align:left;direction:ltr">The
processors have a 10 years old legacy code written by multiple mathematicians
and is almost impossible to protect against all faulty data. </p>
<p class="MsoNormal" style="text-align:left;direction:ltr"> </p>
<p class="MsoNormal" style="text-align:left;direction:ltr">Is
there any mechanism in RabbitMQ that can still give me load balancing but kick
out a message that cannot be processed by consumers? </p><p class="MsoNormal" style="text-align:left;direction:ltr"><br></p><p class="MsoNormal" style="text-align:left;direction:ltr">Thanks</p><span class="HOEnZb"><font color="#888888"><p class="MsoNormal" style="text-align:left;direction:ltr">
Oren</p></font></span></div>
<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>
<br></blockquote></div><br></div>