Netty:利用netty-mqtt-client发布和订阅消息的格式转换

  • Post author:
  • Post category:其他




利用netty-mqtt-client实现Mqtt消息的发布和订阅

中描述了如何实现消息的发布和订阅

但是消息有不同的格式,例如字符串和16进制hex,对于不同的格式,在发布和订阅式需要转换格式,然后进行处理,否则会出现乱码。



1.发布16进制消息

String msg = "5A00F201";  //16进制字符串
mqttClient.publish(topic,Unpooled.copiedBuffer(CronUtil.hexToByteArray(msg)), MqttQoS.AT_MOST_ONCE,false);



2.订阅16进制消息

@Override
public void onMessage(String topic, ByteBuf payload) {
	String message = ByteBufUtil.hexDump(payload).toUpperCase();
	log.info("消息主题:" + topic);
	log.info("消息内容:" + message);
}



3.发布字符串消息

String msg = "hello";
mqttClient.publish(topic, Unpooled.copiedBuffer(msg.getBytes()), MqttQoS.AT_MOST_ONCE,false);



4.订阅字符串消息

@Override
public void onMessage(String topic, ByteBuf payload) {
	String message = payload.toString(CharsetUtil.UTF_8);
	log.info("消息主题:" + topic);
	log.info("消息内容:" + message);
}



版权声明:本文为juligang320原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。