如何在 /mosquitto/data MQTT mosquitto 中存储消息?

How to store messages in /mosquitto/data MQTT mosquitto?

我是 运行 Docker,在 AWS ECS 中,在 ECS 实例的 docker 容器内,我是 运行 eclipse-mosquitto

我需要将消息存储在 /mosquitto/data

我试过的

docker exec -it [container name] sh 导航到 /mosquitto/config/mosquitto.conf

修改了 mosquitto.conf 文件并添加了这些行:

persistence true
persistence_location /mosquitto/data/
listener 1883
listener 9001
protocol websockets

注意

我已经在 /mosquitto 上安装了 EFS,所以我希望配置文件能够持续存在,并且我希望它在下次容器重新启动时使用该配置文件

我期待什么

每当我publishing/subscribing一个主题时,它应该将相关数据存储在mosquitto/data

第一个

登录到 运行 容器并编辑配置文件不会改变 运行 代理行为。

您通常需要重新启动容器(这将恢复对配置文件的更改)

您可以在启动时使用以下命令行选项将您自己的配置文件装载到容器中(在 docker 集线器 page 上有描述)

$ docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto

其次

mosquitto 不会将所有消息存储在持久性文件中,这不是它的用途。该文件仅用于存储正在传输的 QOS 1 或 2 消息和保留的消息。这些消息通常保存在内存中,但会定期或在代理关闭时写入文件,以便在代理重新启动时恢复它们。另外持久化文件的格式是自定义的二进制格式,不是你能轻易读懂的。