Después de buscar en diversos repositorios y páginas webs al concluir descubrimos la resolución que te compartimos a continuación.
Solución:
Aquí se explica cómo hacerlo correctamente con un script de shell.
#!/bin/sh
echo "cleaning " $1 " :: usage: cleanmqtt "
mosquitto_sub -h $1 -t "#" -v --retained-only | while read line; do mosquitto_pub -h $1 -t "$line% *" -r -n; done
Simplemente póngalo en un archivo llamado algo como
finalmente_una_forma_funcional_de_eliminar_todos_los_mensajes_molestos.sh
Entonces corre
sh finally_a_working_way_to_remove_all_those_annoying_messages.sh localhost
Esta solución es bastante cruda. No puedes especificar qué borrar ni nada. Es posible que tenga que cancelar con ctrl-c después de que pueda asumir que ha recibido todos los mensajes.
Hay 2 opciones para esto usando el código de cliente paho dependiendo de cuál de los 2 publish
métodos que utiliza.
MqttMessage msg = new MqttMessage(new byte[0]);
msg.setRetained(true);
client.publish(topic, msg);
o
client.publish(topic, new byte[0],0,true);
La otra opción sería detener a mosquitto y eliminar el archivo de persistencia y reiniciar
Nos puedes añadir valor a nuestra información tributando tu veteranía en las crónicas.