vert-x3 / vertx-mqtt

Vert.x MQTT
Apache License 2.0
184 stars 86 forks source link

java.lang.ClassCastException when subscribe mqtt topic #181

Closed lonelyleaf closed 3 years ago

lonelyleaf commented 3 years ago

Questions

After mqtt established connection and subscribe topic the client throws excption

java.lang.ClassCastException: class io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader cannot be cast to class io.netty.handler.codec.mqtt.MqttMessageIdAndPropertiesVariableHeader (io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader and io.netty.handler.codec.mqtt.MqttMessageIdAndPropertiesVariableHeader are in unnamed module of loader 'app')

Version

vertx 3.9.4

Context

jdk11 gradle 6.6

log.txt mqtt-bug1 mqtt bug2 bug3

java.lang.ClassCastException: class io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader cannot be cast to class io.netty.handler.codec.mqtt.MqttMessageIdAndPropertiesVariableHeader (io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader and io.netty.handler.codec.mqtt.MqttMessageIdAndPropertiesVariableHeader are in unnamed module of loader 'app')
    at io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage(MqttMessageFactory.java:39)
    at io.vertx.mqtt.impl.MqttClientImpl.subscribe(MqttClientImpl.java:502)
    at cn.waterstrategy.gateway.EmqxMqttGateway.connected(EmqxMqttGateway.java:139)
    at cn.waterstrategy.gateway.EmqxMqttGateway.lambda$openConnection$0(EmqxMqttGateway.java:102)
    at io.vertx.mqtt.impl.MqttClientImpl.handleConnack(MqttClientImpl.java:1124)
    at io.vertx.mqtt.impl.MqttClientImpl.handleMessage(MqttClientImpl.java:823)
    at io.vertx.mqtt.impl.MqttClientImpl.lambda$null$0(MqttClientImpl.java:222)
    at io.vertx.core.net.impl.NetSocketImpl.lambda$new$2(NetSocketImpl.java:101)
    at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:237)
    at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:127)
    at io.vertx.core.net.impl.NetSocketImpl.handleMessage(NetSocketImpl.java:357)
    at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:366)
    at io.vertx.core.impl.EventLoopContext.execute(EventLoopContext.java:43)
    at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:229)
    at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:163)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:834)