moquette
moquette copied to clipboard
Throw Exception io.netty.util.IllegalReferenceCountException: refCnt: 0
Expected behavior
I am trying to create mqtt message from code and then publish it.
Actual behavior
But in PublishListener event when I am trying get payload this exception io.netty.util.IllegalReferenceCountException: refCnt: 0 throws every time.
Steps to reproduce
Here is my code: _mqttBroker = new Server(); final List<? extends InterceptHandler> userHandlers = Arrays.asList(new PublisherListener()); _mqttBroker.startServer(server_config, userHandlers); String clientID = "a2bae31a-6c4f-4076-ae66-5aadf3668b0a"; MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE, false, 0); MqttPublishVariableHeader headerTopic = new MqttPublishVariableHeader(topic, 0); ByteBuf anypayload = Unpooled.wrappedBuffer(data.getBytes()); MqttPublishMessage msg = new MqttPublishMessage(mqttFixedHeader, headerTopic, anypayload); _mqttBroker.internalPublish(msg, clientID); InterceptPublishMessage message = new InterceptPublishMessage(msg, clientID, clientID); new PublisherListener().onPublish(message);
public void onPublish(InterceptPublishMessage message) { System.out.println("moquette mqtt broker message intercepted, topic: " + message.getTopicName() + ", content: "); System.out.println(message.getPayload()); byte[] bytes = new byte[message.getPayload().readableBytes()]; message.getPayload().duplicate().readBytes(bytes); System.out.println(new String(bytes)); SensorContext.MessageRecieved(message); }
Moquette MQTT version
moquette-broker-0.15
JVM version (e.g. java -version
)
1.8.0_312
OS version (e.g. uname -a
)
Ubuntu 20
The code you posted is very incomplete. Can you make a self-contained test that shows the issue?