Introduce ability to control what happens to consumed messages

- control if a failed message should be requeued
- control if a failed message that has been redelivered should be requeued