プラグイン
EMQXプラグインは、ユーザーがErlangを用いてブローカーのコア機能を拡張したり、カスタムロジックを統合したりすることを可能にします。このシステムは、カスタム認証、認可、ログ記録、メトリクス、プロトコル変換などの機能を実装するのに最適です。
本節では、プラグインとは何か、そしてプラグインの開発、カスタマイズ、管理方法について紹介します。
EMQX 6.3.0以降、プラグインフレームワークはplugins機能ゲートによって制御されます。FULLプリセットではデフォルトで有効になっています。カスタムのEMQX_FEATURESリストを使用する場合は、プラグイン機能を利用するためにpluginsを含める必要があります。pluginsが無効の場合、EMQXはプラグインフレームワークを起動せず、EMQXダッシュボードはプラグイン管理UIを非表示にし、/api/v5/plugins/*および/api/v5/plugin_api/*のルートは登録されません。詳細は機能ゲートをご参照ください。
プラグインとは?
EMQXにおけるプラグインは、EMQXノード内で動作するErlang/OTPアプリケーションです。プラグインは、クライアント接続、メッセージパブリッシュ、認証などの事前定義されたイベントであるフックポイントを介してEMQXコアと連携します。
EMQXで使用するためには、プラグインは以下の条件を満たす必要があります。
- リリースとしてビルドされていること – コンパイル済みプラグインとメタデータを含む
.tar.gzパッケージ。 - ダッシュボード、REST API、またはCLIを通じてインストールされること。
- 設定およびライフサイクル操作(起動、停止、アンインストール)によって管理されること。
起動時に、プラグインは通常、自身の関数の一部をEMQXのコールバックとして登録し、EMQXの動作を変更または拡張します。プラグインはEMQXコアおよび他のプラグインから独立して動作し、相互干渉を防ぎます。また、インストール、起動、シャットダウン、削除の定義されたプロセスに従うため、ライフサイクルに対応しています。これにより、本番環境での安全かつ容易な管理が可能になります。
主要な概念
- フックポイント:プラグインがカスタムロジックを挿入できるEMQXのワークフロー上の拡張ポイント。
- コールバック:プラグインモジュール内でフックポイントに登録される関数。
- 設定スキーマ:プラグイン設定の検証およびEMQXダッシュボードでのUIフォームの動的生成に使用される、オプションのAvroベースのスキーマ。
プラグインのワークフロー概要
- 公式のプラグインテンプレートを使ってプラグインを開発します。
- 認証など、ユースケースに合わせてロジックをカスタマイズします。
make relを使ってプラグインをビルドし、.tar.gzファイルにパッケージ化します。- ダッシュボード、CLI、またはAPIを使ってEMQXにプラグインをインストールし、起動します。
- 必要に応じて設定を更新したり、停止・アンインストールを行います。
詳細情報
- EMQXプラグインの開発:公式テンプレートを使ってプラグインをゼロから作成する方法を学べます。
- プラグインロジックのカスタマイズ:認証、認可などのフックコールバック実装例を紹介します。
- プラグインの管理:EMQXノードやクラスター全体でのプラグインのインストール、設定、起動/停止、アンインストール方法を解説します。
- プラグインカタログ:データ統合、ガバナンス、アクセス制御向けの即利用可能なプラグインを閲覧できます。