diff --git a/netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClientImpl.java b/netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClientImpl.java index 169779b530..aef2cad684 100644 --- a/netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClientImpl.java +++ b/netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClientImpl.java @@ -407,8 +407,12 @@ final class MqttClientImpl implements MqttClient { } private MqttMessageIdVariableHeader getNewMessageId() { - this.nextMessageId.compareAndSet(0xffff, 1); - return MqttMessageIdVariableHeader.from(this.nextMessageId.getAndIncrement()); + int messageId; + synchronized (this.nextMessageId) { + this.nextMessageId.compareAndSet(0xffff, 1); + messageId = this.nextMessageId.getAndIncrement(); + } + return MqttMessageIdVariableHeader.from(messageId); } private Future createSubscription(String topic, MqttHandler handler, boolean once, MqttQoS qos) {