According to RabbitMQ tutorial 7, if we publish messages in a batch: "One drawback is that we do not know exactly what went wrong in case of failure, so we may have to keep a whole batch in memory to log something meaningful or to re-publish the messages"
Source:
https://www.rabbitmq.com/tutorials/tutorial-seven-java.html
I'm confused about the meaning of this statement. Even if we send messages in a batch, for each message, there are only three options - ACK, NACK or timeout. We are guaranteed to hit one of these cases. So why don't we know what went wrong?
Re: keeping a batch in memory, isn't that what we have to do even if we implement asynchronous publishing? The broker might decide to ACK multiple messages at once, which means we have to store them in memory until we receive the ACK.
Thanks!