Hi all,<br><br>I've written up a blog post on an approach to getting similar functionality to Google AppEngine's Transactional Task Queue, using RabbitMQ:<br><br><a href="http://www.eighty-twenty.org/index.cgi/tech/rabbitmq/tasks-within-transactions-20111218.html">http://www.eighty-twenty.org/index.cgi/tech/rabbitmq/tasks-within-transactions-20111218.html</a><br>
<br>Here are the opening paragraphs:<br><br><blockquote style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">In a discussion of moving from Google AppEngine to EC2, a participant mentioned that the only "odd" GAE service he made use of was transactional task queues, and that there was no direct analogue of this service in other queueing systems.<br>
<br>Here's one way of building a transactional task queue using RabbitMQ and your favourite SQL database.<br><ul><li>a table in the database will hold pending tasks</li><li>messages going through RabbitMQ will inform workers of the arrival of new tasks</li>
<li>the available tasks will be load-balanced between n workers</li><li>a "cleaner" process makes sure all tasks are eventually run and that failed tasks are eventually detected</li></ul>In this article, I'll spell out the requirements for the system, and discuss the details of the database tables, RabbitMQ queues, and daemon processes required. I'll then evaluate the solution presented in terms of the requirements, and conclude by discussing a few variations on the solution that might be worth exploring.<br>
</blockquote><br>Regards,<br> Tony<br>-- <br>Tony Garnock-Jones<br><a href="mailto:tonygarnockjones@gmail.com">tonygarnockjones@gmail.com</a><br><a href="http://homepages.kcbbs.gen.nz/tonyg/">http://homepages.kcbbs.gen.nz/tonyg/</a><br>
<br>