オフラインメッセージ
このプラグインは、サブスクライバーがオンラインでない場合に選択された QoS 1/2 のメッセージを永続化し、後で一致するサブスクライバーがオンラインになった際にそれらを再生します。
対応バックエンド:
- MySQL
- Redis
設定
プラグインは標準の EMQX プラグイン設定 API を通じて設定します:
PUT /api/v5/plugins/<name-vsn>/config
スキーマは priv/config.hocon に定義されており、Redis と MySQL 向けのバックエンド固有の設定を含みます。
プラグインがメッセージを永続化する条件は以下の通りです:
- パブリッシュの QoS が
0より大きい - トピックが設定された
message.topic_filterのいずれかにマッチする
ビルドとテスト
リポジトリのルートからプラグインをビルドします:
bash
makeこのプラグインの Common Test スイートを実行します:
bash
make plugins/emqx_offline_messages-ctデータベーススキーマ
MySQL
sql
CREATE TABLE IF NOT EXISTS `mqtt_msg` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`msgid` varchar(64) DEFAULT NULL,
`topic` varchar(180) NOT NULL,
`sender` varchar(64) DEFAULT NULL,
`qos` tinyint(1) NOT NULL DEFAULT '0',
`retain` tinyint(1) DEFAULT NULL,
`payload` blob,
`arrived` datetime NOT NULL,
PRIMARY KEY (`id`),
INDEX topic_index(`topic`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;sql
CREATE TABLE IF NOT EXISTS `mqtt_sub` (
`clientid` varchar(64) NOT NULL,
`topic` varchar(180) NOT NULL,
`qos` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`clientid`, `topic`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;Redis
Redis は mqtt:sub:* および mqtt:msg:* キースペースの下でハッシュとソート済みセットを使用します。
- サブスクリプション状態はクライアント ID をキーとするハッシュに保存されます。
- メッセージペイロードはメッセージ ID をキーとするハッシュに保存されます。
- トピックインデックスはトピックをキーとするソート済みセットに保存されます。
ダウンロード
各 EMQX リリース向けの tarball:
| EMQX バージョン | プラグインバージョン | パッケージ |
|---|---|---|
| 6.1.2 | 2.0.0 | emqx_offline_messages-2.0.0.tar.gz |
| 6.1.3 | 2.0.0 | emqx_offline_messages-2.0.0.tar.gz |