2016-04-19 43 views
6

Bir mesajın silinmesi için mosquitto_pub -h [server] -r-nt [XYZ] sözdizimini gördüm. Sorunum, cihaz geliştiricilerinin çok fazla çöp mesajı göndermesiydi. Gerektiğinde otomatik olarak bunu yapmak için değiştirmek istediğim bir java/paho kod tabanım var, ancak sıfır bayt mesajı yayınlayamıyorum.mosquitto'dan TÜM alıkonulmuş mqtt mesajlarının nasıl silineceği

'u denedim, ancak bu işe yaramadı.

Her şeyi nasıl sileceğinizle ilgili öneriler, kitle.

cevap

3

Kullanmakta olduğunuz 2 publish yönteminden hangisine bağlı olarak paho istemci kodunu kullanarak bunun için 2 seçenek vardır.

+0

Aslında ilk sürümü, çalışmaz. – kartben

+0

kalıcılık dosya gerçekten gerekli seçenek olduğu ortaya çıktı silme – hardillb

+1

muhafaza ayarlamak için kod eklendi. 'sudo hizmet mosquitto stop' ' sudo rm/var/lib/mosquitto/mosquitto.db' mosquitto start' Eğer kontrol edebilirsiniz 'sudo hizmeti **: – JohnL

0

Bu çalışması gerekir

MqttMessage msg = new MqttMessage(new byte[0]); 
msg.setRetained(true); 
client.publish(topic, msg); 

veya

client.publish(topic, new byte[0],0,true); 

Diğer seçenek mosquitto durdurmak ve kalıcılık dosyasını silin ve yeniden olacaktır: Ayrıca

client.publish(topic, new byte[]{}, 0, true); 

, sen olabilir Belirli bir konu hiyerarşisini silmek için Eclipse Paho Python'dan this script ile ilgileniyorum. Java'da benzer bir davranışı uygulamak isteyebilirsiniz, ancak bir kerelik bir çözüm aramaya benziyor gibi görünebilir, bu yüzden belki de sadece Python betiğini kullanın :)

+0

Python betiği, ascii olmayan konular veya yükler ile çalışmıyor gibi görünüyor.Az önce yayınladığım kabuk betiği daha iyi görünüyor. – Gussoh

+0

"bu betik" link şu anda 404 – Trevor

5

Bir kabuk betiğiyle nasıl düzgün yapılır .

#!/bin/sh 
echo "cleaning " $1 " :: usage: cleanmqtt <host>" 
mosquitto_sub -h $1 -t "#" -v | while read line _; do mosquitto_pub -h $1 -t "$line" -r -n; done 

Hemen Sonra

sh finally_a_working_way_to_remove_all_those_annoying_messages.sh localhost 

Sen sonra ctrl + c gerekecek çalıştırmak

finally_a_working_way_to_remove_all_those_annoying_messages.sh

gibi somthing adlı bir dosyaya koydu Bir süre tüm mesajları aldığında. Bu çözüm oldukça ham. Neleri silmek istediğinizi belirtemezsiniz.

+0

Kullanıcı adı ve şifreyi içerecek şekilde betiğin nasıl değiştirileceğini gösterebilir misiniz? Ben çalıştırdığımda, "Bağlantı Reddedildi: Yetkili değil" alıyorum. Teşekkürler. – moster67

+0

Elbette, hem mosquitto_sub hem de mosquitto_pub – Gussoh

0

Aracıyı sunucuda durdurup yeniden başlattım. Tüm korunan mesajlar kayboldu. :) Bunu yapabilirseniz, en kolay yoldur, bahse girerim. mesajı muhafaza bayrağı seti ile yayınlanması gerekir olarak

+2

satırında -u _username_ -P _password_ öğesini ekleyin. Yalnızca, aracının hiçbir kalıcılığı yapılandırılmamışsa çalışır, bu varsayılan değil – hardillb