A note somewhere in here about how `FIN` should be sent back for messages that can't be processed for some reason and shouldn't be retried might be useful.  I know that it was initially confusing to me that (in the case of simple boolean-returning message processors) I needed to return `True` to avoid having a message requeued.

(But maybe that's just me.)