Skip to content

遅延パブリッシュ

遅延パブリッシュは、EMQXがサポートする拡張MQTT機能です。クライアントがトピックプレフィックス $delayed/{DelayInterval} を付けてEMQXにメッセージをパブリッシュすると、遅延パブリッシュ機能がトリガーされます。メッセージはユーザーが事前に定義した時間経過後にパブリッシュされます。

遅延パブリッシュのトピックの具体的な形式は以下の通りです。

bash
$delayed/{DelayInterval}/{TopicName}
  • $delayed$delayedで始まるメッセージは遅延が必要なメッセージとして扱われます。遅延時間は次のトピックレベルの内容で決まります。
  • {DelayTime}:このMQTTメッセージのパブリッシュを遅延させる時間間隔またはタイムスタンプを秒単位で指定します。時間間隔の場合、最大許容間隔は42949670秒(約497日)です。タイムスタンプの場合は、現在のシステム時刻から42949670秒以内でなければなりません。{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メッセージをパブリッシュする

ダッシュボードで遅延パブリッシュを設定する

  1. EMQXダッシュボードを開きます。左側のナビゲーションメニューで Management -> Delayed Publish をクリックします。

  2. Delayed Publish ページで以下を設定できます:

    • Enable:遅延パブリッシュを有効または無効にします。デフォルトでは有効です。
    • Max Delayed Messages:遅延メッセージの最大数を指定できます。
    遅延パブリッシュ設定ダッシュボード

MQTTX Desktopで遅延パブリッシュを試す

前提条件

MQTTX Desktop を使った基本的なパブリッシュとサブスクライブ操作

  1. EMQXとMQTTX Desktopを起動します。New Connection をクリックしてパブリッシャーとしてクライアント接続を作成します。

    • Name フィールドに Demo と入力します。
    • Host にローカルホスト 127.0.0.1 を入力します(このデモの例として)。
    • 他の設定はデフォルトのままにして Connect をクリックします。

    TIP

    MQTT接続の作成に関する詳細な手順は MQTTX Desktop を参照してください。

    新規接続設定一般
  2. もう一つMQTT接続を作成し、サブスクライバーとして設定します。

  3. Connections ペインで Demo という名前の接続を選択します。トピックテキストボックスに $delayed/10/x/y と入力し、メッセージに Delayed Message と入力します。

    • $delayed:遅延メッセージであることを示します。
    • 10:遅延間隔が10秒であることを示します。
    • x/y:メッセージのトピック名を示します。
  4. Connections ペインで Subscriber という名前の接続を選択します。New Subscription ボタンをクリックしてサブスクリプションを作成します。Topic テキストボックスに x/y と入力してこのトピックをサブスクライブし、Confirm をクリックします。

    遅延メッセージのサブスクライブ
  5. Connections ペインで Demo という名前の接続を選択します。送信ボタンをクリックして、トピック $delayed/10/x/yDelayed Message を送信します。

  6. 10秒待ちます。Subscriber という名前の接続が10秒後に遅延メッセージを受信するのが確認できます。

    遅延メッセージの受信

MQTTX CLIで遅延パブリッシュを試す

前提条件

MQTTX CLI を使った基本的なパブリッシュとサブスクライブ操作

  1. サブスクライバーとして新しい接続を作成し、トピック t/1 をサブスクライブします。

    bash
    mqttx sub -t t/1 -v
  2. 新しいターミナルウィンドウを開き、パブリッシャーとして以下のコマンドを使って遅延メッセージを送信します。サブスクライバーは5秒後にメッセージを受信します。

    bash
    mqttx pub -t "\$delayed/5/t/1" -m "Hello Delayed msg"