使用paho org.eclipse.paho.client.mqttv3.MqttClient发布获取发布响应/ PubAck延迟

时间:2016-12-19 17:42:39

标签: mqtt paho

我正在使用paq库Classes for Mqtt Connections org.eclipse.paho.client.mqttv3.MqttClient。 (不是MqttAsyncClient)

在我使用

发布的情况下
  

mqttClient.publish(uid +“/ p”,new MqttMessage(payload.toString()。getBytes()));

此方法为我完成任务,但不返回任何内容,因此我无法检查发布和pubAck之间的延迟。

为了获得延迟,我使用以下代码而不是直接调用mqttClient的发布函数。

    public long publish(JsonObject payload , String uid, int qos) {
    try {
        MqttTopic topic = mqttClient.getTopic(uid + "/p");
        MqttMessage message = new MqttMessage(payload.toString().getBytes());
        message.setQos(qos);
        message.setRetained(true);
        long publishTime = System.currentTimeMillis();            
        MqttDeliveryToken token = topic.publish(message);           
        token.waitForCompletion(10000);
        long pubCompleted = System.currentTimeMillis();
        if (token.getResponse() != null && token.getResponse() instanceof MqttPubAck) {
            return pubCompleted-publishTime;
        }
        return -1;
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    }
}

这可以完成工作,但我不确定这是否是正确的方法。如果还有其他方法可以告诉我。

0 个答案:

没有答案