Logstash ack and persistent queue checkpoint order

Hi, read the documentation forth and back and it's not obvious when a message is acked (e.g. consuming from RabbitMQ) . Is the message acked after written to Logstash PQ or acked after reading the input source but before written to Logstash PQ?
I know there are the queue.checkpoint.acks and queue.checkpoint.writes settings but apart from these, what is the order of persisting to PQ vs acking the message? Thank you!

The http plugin is documented as being well protected by a persistent queue. The decode_body function will have successfully called push_decoded_event (which adds the event to the queue) before it returns true.

My reading of the internal_queue_consume! function in the rabbitmq input is that it does not call @hare_info.channel.ack until it has added all the events to @output_queue.

I may be wrong, but I think you are protected.

Thank you for your answer. Unfortunately i must know for sure:), so there's nothing left than downloading the source and find how PQ ack is handled...