如何清除Mosquitto中所有保留的mqtt消息?
我已经看到了清除一次性消息的语法。我的问题是设备开发人员发布了很多垃圾消息。mosquitto_pub -h [server] -r -n -t [XYZ]
我有一个Java / Paho代码库,我想根据需要自动执行此操作,但我似乎无法发布零字节消息。我试过了
client.publish(topic,null);
...但这似乎不起作用。
关于如何批量删除所有内容的任何建议?
我已经看到了清除一次性消息的语法。我的问题是设备开发人员发布了很多垃圾消息。mosquitto_pub -h [server] -r -n -t [XYZ]
我有一个Java / Paho代码库,我想根据需要自动执行此操作,但我似乎无法发布零字节消息。我试过了
client.publish(topic,null);
...但这似乎不起作用。
关于如何批量删除所有内容的任何建议?
下面介绍如何使用 shell 脚本正确执行此操作。
#!/bin/sh
echo "cleaning " $1 " :: usage: cleanmqtt <host>"
mosquitto_sub -h $1 -t "#" -v --retained-only | while read line; do mosquitto_pub -h $1 -t "${line% *}" -r -n; done
只需将其放入一个名为“类似于”的文件中
finally_a_working_way_to_remove_all_those_annoying_messages.sh
然后运行
sh finally_a_working_way_to_remove_all_those_annoying_messages.sh localhost
这个解决方案非常粗糙。您无法指定要删除的内容或任何内容。在可以假定它已收到所有消息后,您可能必须使用 ctrl-c 中止。
使用 paho 客户端代码有 2 个选项,具体取决于您使用的 2 种方法中的哪一种。publish
MqttMessage msg = new MqttMessage(new byte[0]);
msg.setRetained(true);
client.publish(topic, msg);
或
client.publish(topic, new byte[0],0,true);
另一种选择是停止mosquitto并删除持久性文件并重新启动