首页 > 解决方案 > Java eclipse PAHO 验证发布是否成功

问题描述

MqttClient publisher = new MqttClient(MQTT_URL,clientId+configId);
MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(true);
options.setConnectionTimeout(10);
publisher.connect(options);
MqttMessage msg = new MqttMessage(payload);
msg.setQos(0);
msg.setRetained(true);
publisher.publish(topic,msg);

我正在使用 PAHO MQTT java 库。在上面的代码中,一旦消息发布,是否有任何可用的回调可以用来验证消息是否已传递给代理?

标签: javamqttpaho

解决方案


来自 Paho Javadoc

交付完成

无效交付完成(IMqttDeliveryToken 令牌)

当消息的传递完成并收到所有确认时调用。对于 QoS 0 消息,一旦将消息交给网络进行传递,就会调用它。对于 QoS 1,它在收到 PUBACK 时被调用,对于 QoS 2,它在收到 PUBCOMP 时被调用。令牌将与发布消息时返回的令牌相同。

参数:

  • token - 与消息关联的传递令牌。

您将需要实现接口并使用方法(文档MQTTCallback将其传递给客户端对象.setCallback()

但是在 QOS 0 时,一旦客户端尝试发送消息,回调就会触发,无法保证消息会到达那里。


推荐阅读