Как хранить сообщения в / mosquitto / data MQTT mosquitto? - PullRequest
0 голосов
/ 14 февраля 2020

Я работаю Docker в AWS ECS и внутри контейнера docker в экземпляре ECS, в котором я работаю 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

NOTE

Я смонтировал EFS на /mosquitto, поэтому я ожидаю, что файл конфигурации будет сохраняться, и я ожидаю, что он будет использовать этот файл конфигурации при следующем перезапуске контейнера

Что я ожидаю

Всякий раз, когда я publishing/subscribing для topi c, он должен хранить соответствующие данные в mosquitto/data

1 Ответ

2 голосов
/ 14 февраля 2020

Первый

Вход в работающий контейнер и редактирование файла конфигурации не изменит поведение работающих посредников.

Обычно вам необходимо перезапустить контейнер ( который вернет изменения в файл конфигурации)

Вы можете смонтировать свой собственный файл конфигурации в контейнер во время запуска с помощью следующей опции командной строки (описанной на странице docker hub )

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

Во-вторых

mosquitto не будет хранить все сообщения в файле постоянства, это не то, для чего он. Файл используется только для хранения сообщений QOS 1 или 2, находящихся в полете, и сохраненных сообщений. Эти сообщения обычно хранятся в памяти, но записываются в файл через равные промежутки времени или при отключении посредника, поэтому их можно восстановить при перезапуске посредника. Кроме того, формат файла персистентности - это пользовательский двоичный формат, который не легко читается.

...