<div>Hi Alexis<br></div><div>   thanks, I think Im getting a better understanding now. Initially I wanted to look at auto requeueing for circumstances when my client subscribing to events went down or got disconnected. Now my understanding is that in those cases, messages get auto requeued.</div>
<div>    However, if I choose not to autoack, then it looks like the responsibility of requeuing a client, forcing a time delay on the delivery and also maybe forcing a limit on the number of passes through the queue is going to have to become subscriber responsibility. I was hoping to handle that as a configuration on the queue itself outside of code, but I guess that isn&#39;t possible.</div>
<div><br></div><div>(the use case we have requires us to make sure that every message is processed as far as possible. Meaning actual failures and successes are sent onward, but failures for technical reasons require us to try again later, by which time the technical issue might have been resolved).</div>
<div><br></div><div>Im taking a look now at the task management systems now.</div><div><br></div><div>Please do describe the other ways of forcing a requeue, I&#39;d love to know what my options are.</div><br><div class="gmail_quote">
On Wed, Dec 30, 2009 at 4:34 AM, Alexis Richardson <span dir="ltr">&lt;<a href="mailto:alexis.richardson@gmail.com">alexis.richardson@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;">
Vishnu<br>
<br>
I am not the best person to answer this question, but I can tell you<br>
that your behaviour can be achieved without requiring timers.<br>
<br>
Assuming you are unwilling to simply close the channel and force the<br>
requeue, then:<br>
<br>
1. You could explicitly requeue by re-publishing the message.  No need<br>
to use acks here.<br>
<br>
2. You could look at what one of the many task management systems do.<br>
For example celery or quebert.<br>
<br>
<a href="http://ask.github.com/celery/introduction.html" target="_blank">http://ask.github.com/celery/introduction.html</a><br>
<a href="http://bytebucket.org/adroll/quebert/" target="_blank">http://bytebucket.org/adroll/quebert/</a><br>
<br>
Or look at the list here: <a href="http://delicious.com/alexisrichardson/rabbitmq+work" target="_blank">http://delicious.com/alexisrichardson/rabbitmq+work</a><br>
<br>
3. Other ways to force a requeue.  I am not going to try and describe<br>
these yet, in case I say something misleading.<br>
<br>
Let me know what you think.<br>
<font color="#888888"><br>
alexis<br>
</font><div><div class="h5"><br>
<br>
<br>
On Tue, Dec 29, 2009 at 8:34 PM, vishnu &lt;<a href="mailto:pathsny@gmail.com">pathsny@gmail.com</a>&gt; wrote:<br>
&gt; Adding back to the list, sorry stupid email client.<br>
&gt;<br>
&gt; would anyone know how this decision is made? When unacked messages get<br>
&gt; requeued to be sent? I know it happens if the client disconnects, but does<br>
&gt; it also happen on rollback?<br>
&gt; Im trying to setup a system whereby if my subscriber picks up an item from<br>
&gt; the queue and for some reason is unable to handle it, the item gets readded<br>
&gt; to the queue<br>
&gt;<br>
&gt; On Tue, Dec 29, 2009 at 8:36 PM, Alexis Richardson<br>
&gt; &lt;<a href="mailto:alexis.richardson@gmail.com">alexis.richardson@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Vishnu<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Dec 29, 2009 at 2:57 PM, vishnu &lt;<a href="mailto:pathsny@gmail.com">pathsny@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; hi, sorry Im a bit confused. But the behavior of moving the message from<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; unacknowledge queue to the ready queue is already a part of rabbitmq.<br>
&gt;&gt;<br>
&gt;&gt; In what way?<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt; There<br>
&gt;&gt; &gt; must be some magic constant somewhere which governs this musn&#39;t there?<br>
&gt;&gt;<br>
&gt;&gt; If there were then it need not be time-based.<br>
&gt;&gt;<br>
&gt;&gt; alexis<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt; On Tue, Dec 29, 2009 at 7:18 PM, Alexis Richardson<br>
&gt;&gt; &gt; &lt;<a href="mailto:alexis.richardson@gmail.com">alexis.richardson@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Vishnu<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Tue, Dec 29, 2009 at 4:37 AM, vishnu &lt;<a href="mailto:pathsny@gmail.com">pathsny@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Hi<br>
&gt;&gt; &gt;&gt; &gt;     I&#39;m trying to use rabbitmq for an web application thats close to<br>
&gt;&gt; &gt;&gt; &gt; synchronous. The main reason I&#39;m looking at rabbitmq is for the<br>
&gt;&gt; &gt;&gt; &gt; reliability<br>
&gt;&gt; &gt;&gt; &gt; and transactionality. The idea is for the webapplication to pump<br>
&gt;&gt; &gt;&gt; &gt; messages<br>
&gt;&gt; &gt;&gt; &gt; into the queue and for a down stream application to subscribe in<br>
&gt;&gt; &gt;&gt; &gt; acknowledgement mode and for each message start a transaction,<br>
&gt;&gt; &gt;&gt; &gt; attempt<br>
&gt;&gt; &gt;&gt; &gt; to<br>
&gt;&gt; &gt;&gt; &gt; process the message and if it fails for technical reasons, to<br>
&gt;&gt; &gt;&gt; &gt; rollback<br>
&gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt; &gt; transaction.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; OK.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt; However, I would like to be able to configure the time for non-acked<br>
&gt;&gt; &gt;&gt; &gt; messages to get requeued to be picked up. Where can this be done?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; This and other &#39;time based&#39; behaviours are frequently requested, but<br>
&gt;&gt; &gt;&gt; *alas* are not yet built-in to RabbitMQ.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; However, don&#39;t give up.  You could create a consumer (in any language)<br>
&gt;&gt; &gt;&gt; which managed this for you, eg enforcing a disconnect after some time<br>
&gt;&gt; &gt;&gt; has passed.  Or, if you are feeling brave you could create a plugin to<br>
&gt;&gt; &gt;&gt; do this &#39;inside the broker&#39;.  Plugins have to be written in erlang.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I hope that helps.  Perhaps the list will have more immediately useful<br>
&gt;&gt; &gt;&gt; suggestions.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Cheers,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; alexis<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt; thanks<br>
&gt;&gt; &gt;&gt; &gt; Vishnu<br>
&gt;&gt; &gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; &gt; rabbitmq-discuss mailing list<br>
&gt;&gt; &gt;&gt; &gt; <a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
&gt;&gt; &gt;&gt; &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;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
&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>
</div></div></blockquote></div><br>