diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp
index feef510..04e16c2 100644
--- a/src/MqttClient.cpp
+++ b/src/MqttClient.cpp
@@ -713,7 +713,9 @@ int MqttClient::read(uint8_t *buf, size_t size)
       _rxLength -= result;
 
       if (_rxLength == 0) {
-        ackRxMessage();
+        if (!_onMessage) {
+          ackRxMessage();
+        }
 
         _rxState = MQTT_CLIENT_RX_STATE_READ_TYPE;
       }