very early work on retrying

I started this ages ago and left it with just an outline of a skeleton. The purpose of this is more to start a conversation. I I have a pretty good understanding of how the RabbitMQ part of retrying would work if anyone wants to discuss it.