オフラインメッセージ
このプラグインは、サブスクライバーがオンラインでない場合に選択された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.3.0 | 2.0.1 | emqx_offline_messages-2.0.1.tar.gz (sha256) |
| 6.3.1 | 2.0.1 | emqx_offline_messages-2.0.1.tar.gz (sha256) |