Did you look at beanstalk? It has both of the features you're looking for: the ability to set a delay and when a job experiences an error it will be placed in the "buried" queue (which is like your Dead Letter Queue)<p><a href="http://kr.github.com/beanstalkd/" rel="nofollow">http://kr.github.com/beanstalkd/</a><p>It has client libraries in most languages and also definitely won't require the use of polling.