我正在关注非常好的教程 www.hivemq.com/mqtt-essentials-part-6-mqtt-quality-of-service-levels/ 但我无法理解实施
当然,您的应用程序必须容忍重复和处理 他们因此。
能给我一个简单的例子吗?
例如,我现在喜欢 (我按照https://medium.com/@lelylan/how-to-build-an-high-availability-mqtt-cluster-for-the-internet-of-things-8011a06bd000)设置部署module.exports.authorizePublish = function(client, topic, payload, callback) {
var chunks = topic.split('/');
if(chunks.length === 4) {
Debug('AUTHORIZING SUBSCRIBE', client.device_id == chunks[1]);
Debug('NICKNAME', chunks[1]);
Debug('CHANNEL', chunks[3]);
Debug('TOPIC', chunks[2]);
Debug('PAYLOAD', payload.toString('utf8'));
var data = {
deviceNickname:chunks[1],
channel:chunks[3],
topic:chunks[2],
payload:payload.toString('utf8')
};
Message.insert(data, function (err, message) {
if (err){
Debug(err);
return;
}
Debug(message);
});
}
callback(null, client.device_id === chunks[1]);
}
答案 0 :(得分:0)
我仍然是MQTT的学习者,而不是专家,但我对使用QoS 1处理重复消息的理解如下:
假设您有一个应用程序,无论出于何种原因需要计算从代理收到的消息。但是,您不想接受重复的消息(当您的客户没有及时确认消息时发送),以便将其考虑在内。
我使用Java Paho客户端,因此它的代码是:
int counter = 0;
public void messageArrived(String topic, MqttMessage message) throws MqttException {
if (message.isDuplicate() == false) {
counter++;
}
}