As I understand, the producer must not retry any of failures to send, and the consumer must commit before performing some processings to provide at-most-once delivery semantics.