MQTT Connector を使用した MQTT ブローカーへのメッセージのパブリッシュ

次の例では、メッセージを目的のトピックに特定のサービス品質 (QoS) でパブリッシュできる MQTT 用 Anypoint Connector (MQTT Connector) の ​Publish​ 操作を設定します。

  1. Studio の ​[Mule Palette (Mule パレット)]​ で、​[HTTP] > [Listener]​ を選択します。

  2. [Listener]​ を Studio キャンバスにドラッグします。

  3. [Path (パス)]​ を ​/mqtt3/publish​ に設定します。

  4. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。

  5. HTTP リスナーのグローバル要素を設定して、​[OK]​ をクリックします。

  6. Studio > ​[Mule Palette (Mule パレット)]​ で、​[MQTT3] > [On New Message]​ を選択します。

  7. [On New Message]​ を Studio キャンバスにドラッグします。

  8. [On New Message]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

  9. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。

  10. [MQTT3 Config (MQTT3 設定)]​ > ​[Connection (接続)]​ で ​[MQTT3 URL Connection (MQTT3 URL 接続)]​ を選択します。

  11. [Client id generator (クライアント ID ジェネレーター)]​ で ​[Client id random suffix generator (クライアント ID ランダムサフィックスジェネレーター)]​ を選択します。

  12. 次の項目を設定します。

    • Client ID (クライアント ID)​: smart-bentley-123

    • Username (ユーザー名)​: usertest

    • Password (パスワード)​: passtest

    • URL​: tcp://127.0.0.1:1883

  13. [OK]​ をクリックします。

  14. [Publish]​ 設定画面で、次の項目を設定します。

    • Topic (トピック)​: quotes/terryPratchett

    • Message (メッセージ)​: #["Stories of imagination tend to upset those without one."]

    • QoS​: AT_LEAST_ONCE (Default)

    • Is retained (保持)​: True

Studio での MQTT Publish 操作の設定

[Configuration XML (設定 XML)]​ エディターで、​<mqtt3:publish>​ および ​topic​ の設定は次のように記述されます。

<mqtt3:config name="MQTT_Config">
    <mqtt3:connection username="usertest" password="passtest" url="tcp://127.0.0.1:1883">
        <mqtt3:client-id-generator>
            <mqtt3:client-id-random-suffix-generator clientId="smart-bentley-123" />
        </mqtt3:client-id-generator>
    </mqtt3:connection>
</mqtt3:config>

<flow name="publishQuote">
    <http:listener config-ref="HTTP_Listener" path="/mqtt3/publish" />
    <mqtt3:publish config-ref="MQTT_Config" topic="quotes/terryPratchett" qos="AT_LEAST_ONCE" isRetained="true">
        <mqtt3:message>#["Stories of imagination sample quote."]</mqtt3:message>
    </mqtt3:publish>
</flow>

メッセージを保持としてマーク

デフォルトでは、ブローカーは、現在のサブスクライバーが存在しないトピックに対して受信したメッセージを破棄します。ブローカーがメッセージを保持するようにするには、​[Is retained (保持)]​ を ​True​ に設定します。ブローカーは、最後に保持されたメッセージと、選択されたトピックに対応するサービス品質を保存します。
保持されたメッセージのトピックに一致するトピックパターンをサブスクライブしている各クライアントは、保持されたメッセージをサブスクライブ後に受信します。ブローカーには、トピックごとに 1 つの保持されたメッセージのみが保存されます。これにより、新しいサブスクライバーは、パブリッシャーからの次の更新を待つのではなく、最新の既存の値を受信できます。