Re[3]: MQTT
От: elmal  
Дата: 26.04.20 05:59
Оценка: 2 (1)
Здравствуйте, sz36, Вы писали:

S> Вопрос в следующем. Насколько я понимаю принципы MQTT, каждый топик может хранить единственное значение (ну или единый форматированный набор). То есть, если писатель, допустим датчик температуры, помещает в топик очередное значение, этим он затирает значение, которое записал туда ранее. И читатель, подключившийся позже, должен увидеть только последнее значение.

Вообще говоря нет. Мне тут приходилось полгода назад делать слепую интеграцию, когда я писал код вслепую, знал только что протокол. Отправлял исходники, их проверяли на отсутствие закладок неделю и через неделю мне присылали логи, если не то, то повторял, так надо мной не издевались никогда в жизни до этого, мне блин даже Hello world кода не дали, а когда я написал эмулятор сервера, выяснилось блин что я не тот протокол использую, и повторно уже не было времени сервер-эмулятор писать . Заработало со второго раза, в первый раз выяснилось что на стороне сервера формат данных не соответствует тому, как было обещано . Я юзал Paho client, и это блин единственное, что мне сказали что можно использовать для интеграции, типа они юзают это, больше у меня инфы вообще не было. Так вот, там не последнее значение, у меня был clientid, и когда я подключался, то мне приходили изменения с последнего подключения. И именно это у меня заработало сразу же, у меня там были некоторые проблемы что я пишу в базу медленнее, чем приходят данные, пришлось делать всякие хитрости чтоб сгладить пики, плюс у библиотеки крайне хреновое API и пришлось несколько поизвращаться чтоб корректно восстанавливался реконнект в случае если сервер перезагружили или была сетевая проблема. Но именно концепция с самого начала работала как очередь.

А то, что ты сказал — так kafka работает, когда ты именно забираешь, и если без некоторых хитростей, то ты будешь забирать последнее значение. В случае с MQTT все выглядит так (по крайней мере API так в библиотеке доступа выглядит), как будто данные тебе кидают, и это именно фича этой шины.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.