1. 說明
以下用到的知識,是建立在我目前所知道的知識領域,以后如果隨着知識的拓展,不一定會更新內容。由於不是EMQ公司的人,EMQ的文檔又很少,很多知識點都是靠猜的。
2. 一些資料
架構設計 http://emqtt.com/docs/v2/design.html
擴展插件 http://emqtt.com/docs/v2/plugins.html 一些自帶的插件
3. 寫插件
經過上一篇博客講解的,編譯_relx后,在deps目錄下就會包含了所有依賴包以及插件包,在這個目錄下有個emq_plugin_template,這個就是插件模版
cp -r emp_plugin_template emp_plugin_wunaozai
在./emq-relx/relx.config 文件中 52行增加
{emq_plugin_wunaozai, load}
在./emq-relx/data/loaded_plugins 文件 可以配置一些默認啟動的插件
在./emq-relx/Makefile 文件中 13行,可以增加emq_plugin_wunaozai 這樣在make的時候會調用編譯
先 rm -rf _rel 清空之前編譯的結果,注意之前沒有停止的先進行停止服務。
1 ./_rel/mqttd/bin/meqqd stop 2 rm -rf _rel 3 make clean 4 make
嗯,這個時候肯定編譯不過,因為剛才復制的 emq_plugin_wunaozai 里面很多文件都要進行修改。
下圖是修改前

具體修改如下:
(1) 首先把所有的文件名都修改,具體如下

其中 ebin 目錄通過 make clean 進行清除即可。
(2) 修改Makefile 文件
可以修改項目名稱,描述,版本之類的信息,后面插件功能變多了的話, 就可以在這里增加必要的依賴包。
(3)修改./etc/emq_plugin_wunaozai.config 配置文件,這些就是一些配置信息。進行修改。
(4)修改./test/emq_plugin_wunaozai_SUITE 這個是單元測試文件,進行修改。
(5)修改./src/*.erl 所有文件
上述文件的修改,還是比較簡單的,就是把template改為wunaozai即可。沒什么難度,編譯不通過,就表示沒有修改全。
4. 編譯插件
回到 emq_relx 目錄,執行rm -rf _rel && make clean && make 然后就看效果了。看到如下界面就表示插件編譯通過。這個過程,可能會出現各式各樣的編譯不通過,就是插件修改的不徹底,再看看,就可以了。
如下圖所示,就是插件編譯好了。

我們啟動一下emqttd
./_rel_emqttd/bin/emqttd console
默認我們自己的插件是沒有加載的,可以通過Dashboard網頁管理界面進行加載,也可以通過 emqttd_ctl plugin load emq_plugin_wunaozai
這里我通過網頁進行加載插件。

到這里,插件的創建就完成了。
下一小節,講一下插件里的一些配置。
