Saltar al contenido

¿Cómo borrar TODOS los mensajes mqtt retenidos de Mosquitto?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *