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)
I did browse the beanstalkd, but I didn’t try it. Since we were moving our infrastructure to aws, it was feasible for us to use aws simple queue service. And I’m using long polling (which will wait 20 seconds to reconnect again) and bulk sending to reduce the no of calls to SQS.
2 comments
[ 5.5 ms ] story [ 23.3 ms ] threadhttp://kr.github.com/beanstalkd/
It has client libraries in most languages and also definitely won't require the use of polling.