用于 java 生成文件夹的 Paho 客户端,如 paho101658642587966-tcp1270011883。这有啥重要性?

Posted

技术标签:

【中文标题】用于 java 生成文件夹的 Paho 客户端,如 paho101658642587966-tcp1270011883。这有啥重要性?【英文标题】:Paho client for java generating folder like paho101658642587966-tcp1270011883. what is the importance of this?用于 java 生成文件夹的 Paho 客户端,如 paho101658642587966-tcp1270011883。这有什么重要性? 【发布时间】:2016-05-29 00:41:41 【问题描述】:

我正在使用 Java 的 Paho 客户端通过 mqtt 连接到 activeMq。我注意到一件奇怪的事情。创建了几个文件夹,其名称如“paho101658642587966-tcp1270011883”并具有空的 .lck 文件。为什么要使用它们以及何时创建它们。

【问题讨论】:

【参考方案1】:

创建这些文件是为了在确认传送到代理之前存储 QOS2 消息的飞行消息。

它们由MQTTDefaultFilePersistence 类创建,您可以通过创建自己的MQTTDefaultFilePresistence 对象并将其传递给MQTTClient 构造函数来更改目录名称和路径。

您也可以切换到内存存储,但是如果客户端在确认交付之前崩溃,这将改变 QOS2 消息的处理方式。

【讨论】:

我没有使用 QOS2 消息。 没关系,分配存储以防您以后以更高的 QOS 发布/订阅【参考方案2】:

您可以将客户端执行的 /tmp 目录指定为:

String receiverId = UUID.randomUUID().toString();

IMqttClient receiver = new MqttClient(
                "tcp://" + properties.getProperty("host") + ":" + properties.getProperty("port"), receiverId, new MqttDefaultFilePersistence("/tmp"));

【讨论】:

以上是关于用于 java 生成文件夹的 Paho 客户端,如 paho101658642587966-tcp1270011883。这有啥重要性?的主要内容,如果未能解决你的问题,请参考以下文章

Mosquitto 和简单的 Paho JS 客户端

MQTT研究之EMQ:eclipse的paho之java客户端使用注意事项

python paho mqtt客户端连接通过ssl/tls给出错误

org.eclipse.paho.mqtt.java-1.0.2 怎么用

org.eclipse.paho.client mqtt客户端连接超时

PAHO MQTT Python 客户端 - 缺少确认,保证为订阅者交付