物聯網架構成長之路(5)-EMQ插件配置
1. 前言
上一小結說了插件的創建,這一節主要怎麽編寫代碼,以及具體流程之類的。
2. 增加一句Hello World
修改 ./deps/emq_plugin_wunaozai/src/emq_plugin_wunaozai.erl 增加一行Hello World
增加後,保存
1 make clean 2 make 3 cp -r ebin ../../_rel/emqttd/lib/emq_plugin_wunaozai-2.3.1
這樣就把最新版本復制到_rel 目錄下了。
回到eqm-relx 目錄
1 ./_rel/emqttd/bin/emqttd console
3. 重新加載/卸載插件
1 ./_rel/emqttd/bin/emqttd_ctl plugins unload emq_plugin_wunaozai 2 ./_rel/emqttd/bin/emqttd_ctl plugins load emq_plugin_wunaozai
下面是運行效果,可以看見,重新打印Hello World ,表示重新加載了
4. 開啟熱加載
啟動官方提供的熱加載插件,可以通過上面那種./emqttd_ctl 進行加載,或者管理界面加載
我們重新修改./emq-relx/deps/emq_plugin_wunaozai/src/emq_plugin_wunaozai.erl 把剛才的Hello World 改成 Test Reload.
然後
1 make clean 2 make 3 cp -r ebin ../../_rel/emqttd/lib/emq_plugin_wunaozai-2.3.1
然後看emq-relx/_rel/emqttd/log/reloader.log
下面紅框圈住的就是我執行 cp 復制是觸發的重新加載。
註意,如果此時你有看剛才 ./_rel/emqttd/bin/emqttd console 啟動後的那個打印,就知道,這個熱啟動,是沒有打印 start wunaozai Test Reload. 這一行信息的。
通過 ./_rel/emqttd/bin/emqttd_ctl reload emq_plugin_wunaozai 這個命令,也是只打印log/reloader.log 日誌,而不觸發load事件。
而通過
1 ./_rel/emqttd/bin/emqttd_ctl plugins unload emq_plugin_wunaozai 2 ./_rel/emqttd/bin/emqttd_ctl plugins load emq_plugin_wunaozai
或者在 web控制臺,
點擊stop 然後start 就會打印 Test Reload. 觸發load事件
5. 說明
通過上述說明一個事,就是在開發過程中, 可以先用console模式開啟EMQ服務,然後開啟熱加載模塊插件,然後在emq-relx/deps 寫插件代碼,然後通過腳本make clean && make && cp 把插件拷貝到運行環境中。Erlang 是支持熱部署的。
物聯網架構成長之路(5)-EMQ插件配置