diff --git a/mqtt_jmeter/src/main/java/net/xmeter/samplers/mqtt/hivemq/HiveMQTTConnection.java b/mqtt_jmeter/src/main/java/net/xmeter/samplers/mqtt/hivemq/HiveMQTTConnection.java index 1e09a23..3f299fb 100644 --- a/mqtt_jmeter/src/main/java/net/xmeter/samplers/mqtt/hivemq/HiveMQTTConnection.java +++ b/mqtt_jmeter/src/main/java/net/xmeter/samplers/mqtt/hivemq/HiveMQTTConnection.java @@ -28,7 +28,7 @@ class HiveMQTTConnection implements MQTTConnection { private static final Logger logger = Logger.getLogger(HiveMQTTConnection.class.getCanonicalName()); private static final Charset charset = Charset.forName("UTF-8"); - private static final CharsetDecoder decoder = charset.newDecoder(); + private static ThreadLocal decoder = ThreadLocal.withInitial(() -> charset.newDecoder()); private final Mqtt3BlockingClient client; private final String clientId; @@ -112,7 +112,7 @@ private void handlePublishReceived(Mqtt3Publish received) { private String decode(ByteBuffer value) { try { - return decoder.decode(value).toString(); + return decoder.get().decode(value).toString(); } catch (CharacterCodingException e) { throw new RuntimeException(new MQTTClientException("Failed to decode", e)); }