最近公司要使用MQTT協議做開發。
但是有一個需求是希望MQTT Broker可以存取發布端的所有歷史資料。
在查找了相關信息後, 目前只有看到MQTT Broker可以使用Retain Message功能。 但是這個只能一個Topic存一筆資料。
所以想要確認一下是否能實現存所有資料的功能?
使用的MQTT Broker 是 Mosquitto
Library 是 Golang的 https://github.com/eclipse/paho.mqtt.golang
謝謝
MQTT broker主要是用來做訊息傳遞的
讓你可以處理pub/sub類型的資料交換需求
因此,資料儲存不是他的主要目的
你要儲存歷史資料,你有幾個方向可以思考
參考時序資料庫的作法,例如influxdb的生態系
influxdb有出telegraf可以幫助你直接橋接mqtt broker的message到他們的db
就不用另外再寫code處理
自己寫一個subscriber server去轉存data
你用的語言是golang,利用他去長期的subscriber你要的topic資料
在裡面做轉存的動作,例如存到mysql或是其他no sql db
這方面有很多延伸問題,例如subscriber server掛掉了,有沒有queue server去做暫存資料
像是Kafka就有提供類似的解決方式
換別套支援度更豐富的MQTT broker,例如EMQX
EMQX有支援資料轉存的服務,你也可以考慮用他們的生態系
這樣也可以省下很多時間
另外,要提醒你,架設自有的MQTT broker是需要維護的,不要以為MQTT broker是永遠不會壞的
如果公司在維運方面沒有適當的資源
建議可以用公有雲的方案,例如AWS IoT Core, AWS Kinesis