ACK——消息確認機制
在實際使用RocketMQ的時候我們並不能保證每次發送的消息都剛好能被消費者一次性正常消費成功,可能會存在需要多次消費才能成功或者一直消費失敗的情況,那作為發送者該做如何處理呢?
為了保證數據不被丟失,RabbitMQ支持消息確認機制,即ack。發送者為了保證消息肯定消費成功,只有使用方明確表示消費成功,RocketMQ才會認為消息消費成功。中途斷電,拋出異常等都不會認為成功——即都會重新投遞。
保證數據能被正確處理而不僅僅是被Consumer收到,我們就不能采用no-ack或者auto-ack,我們需要手動ack(manual-ack)。在數據處理完成后手動發送ack,這個時候Server才將Message刪除。