1. 程式人生 > >物聯網架構成長之路(5)-EMQ插件配置

物聯網架構成長之路(5)-EMQ插件配置

img 小結 body 說明 物聯 mqtt 流程 修改 16px

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插件配置