MQTT 5.0 の完全対応
すべてのパケットプロパティ、トピックエイリアス、$share による共有購読、購読識別子、No Local、Retain Handling、Will Delay、Message Expiry、理由コード、AUTH パケット。
ELX-MQTT Broker は本格的な Web ダッシュボードを備えた Go 製のブローカーです。MQTT 3.1.1 と 5.0 はサードパーティ製ライブラリを使わず、一から完全に実装しました。バイナリ 1 つ、依存関係なし。入れればそのまま動きます。
Debian · Ubuntu · Windows x64 · Linux arm64 と armhf
$ sudo apt-get install elxmqttbroker Setting up elxmqttbroker (1.0.30) ... Created symlink /etc/systemd/system/multi-user.target.wants/elxmqttbroker.service ELX MQTT Broker 1.0.30 — listening on :1883, :8883, dashboard on :8567 state restored retained=128 sessions=7 subscriptions=34 delayed=2
このブローカーはメッセージを配るだけでなく、何が起きているかを正確に示します。誰が接続しているか、どのトピックが生きているか、制限機構が何を捨てているか。
すべてのパケットプロパティ、トピックエイリアス、$share による共有購読、購読識別子、No Local、Retain Handling、Will Delay、Message Expiry、理由コード、AUTH パケット。
メッセージ流量とトラフィックのグラフ、マシンの状態、活動中のトピック、イベントの流れ。WebSocket で配信され、ページの再読み込みは不要です。
フィルター、アクセス種別、許可か拒否かで構成する ACL ルール。既定はすべて拒否で、$u というプレースホルダーを使えば 1 行でクライアントを自分の枝に閉じ込められます。
サーバー水準での双方向のトピック転送。out/in/both の方向、接頭辞、TLS、ループ防止、自動再接続に対応します。
$delayed/60/topic へ発行すると、購読者には 1 分後に届きます。EMQX 互換で再起動しても残り、待ち行列はダッシュボードで確認・取り消しできます。
接続ごとのトークンバケットに加え、トピックパターンごとのルール。流量を一定の頻度まで間引く(最新値を保持)ことも、丸ごと捨てることもできます。
内蔵リスト、MariaDB/MySQL、SQLite、CSV、JWT、外部 HTTP サービス。切り替えは稼働中に行え、ブローカーの再起動は不要です。
ダッシュボードでできることはすべてベアラートークンで利用できます。自分のシステムからデバイスを作成し、権限を与えられます。読み取り専用トークンにも対応。
retain メッセージ、永続セッション、オフラインキュー、遅延メッセージは純 Go の SQLite に保存されます。CGO も外部データベースも不要です。
Debian と Ubuntu 向けの APT リポジトリのパッケージと、Windows 向けのそのまま使えるバイナリ。Docker も実行環境も、追加のライブラリも要りません。
鍵とリポジトリを追加する
sudo wget -qO /usr/share/keyrings/elx-repo.gpg https://repo.um-d.ru/elx-repo.gpg
echo "deb [signed-by=/usr/share/keyrings/elx-repo.gpg] https://repo.um-d.ru stable main" | sudo tee /etc/apt/sources.list.d/elx-repo.list
パッケージ一覧を更新する
sudo apt-get update
ブローカーをインストールする
sudo apt-get install elxmqttbroker
ダウンロードページからインストーラーを入手する
実行して「Windows サービスとしてインストール」を選ぶ
ダッシュボードを開き admin / admin でログインする
http://localhost:8567
インストールが済むと、ダッシュボードは :8567、MQTT は :1883、TLS 上の MQTT は :8883 で待ち受けます。初期のログインは admin / admin です。最初のログイン時に変更してください。
コーデックは 15 種類すべてのパケットを符号化・復号し、トピックの照合は仕様の表どおりに行います。
ネットワーク経由とループバックの 2 台構成で負荷試験を実施しました。ここでは要点だけ。手法と表を載せた完全な報告は 1 クリック先にあります。