遅延パブリッシュ
遅延パブリッシュは、EMQXがサポートする拡張されたMQTT機能です。クライアントがトピックプレフィックス $delayed/{DelayInterval} を付けてEMQXにメッセージをパブリッシュすると、遅延パブリッシュ機能がトリガーされます。メッセージはユーザーが事前に定義した時間経過後にパブリッシュされます。
遅延パブリッシュのトピックの具体的な形式は以下の通りです。
$delayed/{DelayInterval}/{TopicName}$delayed:$delayedで始まるメッセージは遅延が必要なメッセージとして扱われます。遅延時間は次のトピックレベルの内容で決まります。{DelayTime}:このMQTTメッセージのパブリッシュを遅延させる時間間隔またはタイムスタンプを秒単位で指定します。時間間隔の場合、最大許容間隔は42949669秒(約497日)です。タイムスタンプの場合、現在のシステム時刻から42949669秒より前または後であってはなりません。{DelayTime}が整数として解析できないか、有効範囲外の場合はメッセージは破棄されます。{TopicName}:MQTTメッセージのトピック名です。
例:
$delayed/15/x/y:15秒後にトピックx/yにMQTTメッセージをパブリッシュする$delayed/60/a/b:1分後にトピックa/bにMQTTメッセージをパブリッシュする$delayed/1743490800/chat/id:2025年4月1日9:00(ストックホルムタイムゾーン)にトピックchat/idにメッセージをパブリッシュする$delayed/3600/$SYS/topic:1時間後にトピック$SYS/topicにMQTTメッセージをパブリッシュする
ダッシュボードで遅延パブリッシュを設定する
EMQXダッシュボードを開きます。左のナビゲーションメニューで Management -> Delayed Publish をクリックします。
Delayed Publish ページで以下の設定が可能です:
- Enable:遅延パブリッシュの有効/無効を切り替えます。デフォルトでは有効です。
- Max Delayed Messages:遅延メッセージの最大数を指定できます。

MQTTX Desktopで遅延パブリッシュを試す
前提条件
MQTTX Desktop を使った基本的なパブリッシュおよびサブスクライブ操作
EMQXとMQTTX Desktopを起動します。New Connection をクリックしてパブリッシャーとしてクライアント接続を作成します。
- Name フィールドに
Demoと入力します。 - Host にローカルホストの
127.0.0.1を入力します(このデモの例として使用)。 - 他の設定はデフォルトのままにして Connect をクリックします。
TIP
MQTT接続の作成方法の詳細は MQTTX Desktop を参照してください。

- Name フィールドに
別のMQTT接続を作成し、サブスクライバーとして設定します。
Connections ペインで
Demoという接続を選択します。トピックテキストボックスに$delayed/10/x/yと入力し、メッセージにDelayed Messageと入力します。$delayed:遅延メッセージであることを示します。10:遅延時間が10秒であることを示します。x/y:メッセージのトピック名を示します。
Connections ペインで
Subscriberという接続を選択します。New Subscription ボタンをクリックしてサブスクリプションを作成します。Topic テキストボックスにx/yと入力してこのトピックをサブスクライブし、Confirm をクリックします。
Connections ペインで
Demoという接続を選択し、送信ボタンをクリックしてトピック$delayed/10/x/yでDelayed Messageを送信します。10秒待ちます。
Subscriberという接続が10秒後に遅延メッセージを受信するのが確認できます。
MQTTX CLIで遅延パブリッシュを試す
前提条件
MQTTX CLI を使った基本的なパブリッシュおよびサブスクライブ操作
新しい接続をサブスクライバーとして作成し、トピック
t/1をサブスクライブします。bashmqttx sub -t t/1 -vターミナルで新しいウィンドウを開き、パブリッシャーとして以下のコマンドを使って遅延メッセージを送信します。サブスクライバーは5秒後にメッセージを受信します。
bashmqttx pub -t "\$delayed/5/t/1" -m "Hello Delayed msg"