# mulesoft MQTT Connector (mqtt3-connector) - Full Documentation # Anypoint Studio を使用した MQTT Connector 1.0 の設定 Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。 Studio でコネクタを追加および設定する手順は、次のとおりです。 1. [Mule プロジェクトを作成します](#create-mule-project)​。 2. [コネクタを Mule プロジェクトに追加します](#add-connector-to-project)​。 3. [コネクタのフローのソースを設定します](#configure-input-source)​。 4. [フローにコネクタの操作を追加します](#add-connector-operation)​。 5. [コネクタのグローバル要素を設定します](#configure-global-element)​。 6. [接続プロトコルを設定します](#configure-protocol)​。 7. [認証用のログイン情報を設定します](#configure-authentication)​。 8. [フェールオーバーサーバーリストを設定します](#configure-failover)​。 9. [ファイル永続性を有効化します](#enable-file-persistence)​。 10. [接続の詳細オプションを設定します](#configure-advanced-options)​。 [「アプリケーションログの表示」](#view-app-log)​で説明されているように、コネクタを実行するときに、アプリケーションログを表示して問題を確認できます。 Studio で初めてコネクタを設定する場合は、​[「Anypoint Studio を使用したコネクタの設定」](https://docs.mulesoft.com/connectors/introduction/intro-config-use-studio)​を参照してください。このトピックを参照した後、コネクタ項目についての詳細情報が必要な場合は、​[「MQTT Connector リファレンス」](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-reference)​を参照してください。 ## [](#create-mule-project)Mule プロジェクトを作成する Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。 1. Studio で、​**\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力して、​**\[Finish (完了)\]**​ をクリックします。 ## [](#add-connector-to-project)コネクタを Mule プロジェクトに追加する MQTT 用 Anypoint Connector (MQTT Connector) を Mule プロジェクトに追加して、XML コードにコネクタの名前空間およびスキーマの場所を自動的に入力し、プロジェクトの ​`pom.xml`​ ファイルに必須の連動関係を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`mqtt`​」と入力します。 3. **\[Available modules (使用可能なモジュール)\]**​ で ​**\[MQTT 3 Connector (MQTT 3 Connector)\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 Studio でコネクタを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのコネクタを使用できません。 ## [](#configure-input-source)ソースの設定 ソースは、指定された条件が満たされたときにフローを開始します。 次の入力元のいずれかを設定して、MQTT Connector で使用できます。 - **\[MQTT3\] > \[On New Message\]**​ 受信メッセージをリスンすることでフローを開始する - **\[HTTP\] > \[Listener\]**​ 設定されたホストとポートで要求を受信するたびにフローを開始する - **Scheduler**​ 時間ベースの条件が満たされたときにフローを開始する たとえば、​**On New Message**​ ソースを設定する手順は、次のとおりです。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[MQTT3\] > \[On New Message\]**​ を選択します。 2. **\[On New Message\]**​ を Studio キャンバスにドラッグします。 3. **\[On New Message\]**​ 設定画面で、必要に応じて ​**\[Display Name (表示名)\]**​ 項目の値を変更します。 4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で、この設定に指定する接続種別のいずれかを選択します。 - **MQTT3 URL Connection (MQTT3 URL 接続)** - **MQTT3 Fail-Over Connection (MQTT3 フェールオーバー接続)** - **MQTT3 Form Connection (MQTT3 フォーム接続)** 1. ブローカーへの MQTT 接続を識別する一意の直観的な ​**\[Client ID (クライアント ID)\]**​ を指定します。 2. **\[General (一般)\]**​ タブで接続情報 (ブローカーで必要なライブラリなど) も指定します。 3. **\[LWT\]**​ タブで、必要に応じて LWT (Last Will and Testament) メッセージを指定します。 4. **\[TLS/SSL\]**​ タブで、必要に応じて TLS 設定を指定します。 5. **\[Advanced (詳細)\]**​ タブで、必要に応じて接続の詳細オプションと再接続戦略を指定します。 6. **\[OK\]**​ をクリックします。 7. **\[On New Message\]**​ 設定画面の ​**\[Topics (トピック)\]**​ で ​**\[Edit inline (インライン編集)\]**​ を選択し、リスナーでサブスクライブするトピックをリストします。 8. プラス記号 (​**+**​) をクリックして、トピックを設定します。 9. **\[Topic (トピック)\]**​ 設定画面で、トピックの単一レベルまたはマルチレベルのサブスクリプションを表す ​**\[Topic filter (トピック検索条件)\]**​ を設定します。 10. **\[QoS\]**​ を次のいずれかのサービス品質レベルに設定します。 - **AT\_MOST\_ONCE** - **AT\_LEAST\_ONCE** - **EXACTLY\_ONCE** 11. **\[Finish (完了)\]**​ をクリックします。 ## [](#add-connector-operation)フローにコネクタの操作を追加する フローにコネクタの操作を追加すると、そのコネクタで実行する特定の操作をすぐに定義できます。 MQTT Connector の操作を追加するには、次の手順に従います。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで ​**\[MQTT3\]**​ を選択し、目的の操作を選択します。 2. その操作を Studio キャンバスの入力元の右にドラッグします。 ![Anypoint Studio の右側にある \[Mule Palette (Mule パレット)\] ビューから MQTT Connector のいずれかを選択する](_images/mqtt3-operations.png) ## [](#configure-global-element)コネクタのグローバル要素を設定する コネクタを設定する場合、アプリケーション内のそのコネクタのすべてのインスタンスで使用できるグローバル要素を設定することをお勧めします。MQTT Connector にはメッセージのパブリッシュ用とコンシューム用の両方のデフォルト値が用意されています。コネクタを使用するための唯一の要件として、使用する接続を設定し、その接続を一意に識別するクライアント ID の値を指定する必要があります。 クライアント ID はブローカーへの MQTT 接続を識別するため必須です。MQTT ブローカーに接続するクライアントまたはデバイスを一意に識別するわかりやすい名前 (ランダムな文字列ではない) を定義します。 MQTT Connector のグローバル要素を設定する手順は、次のとおりです。 1. Studio キャンバスで操作を選択します。 2. 操作の設定画面で、​**\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックし、グローバル要素設定項目にアクセスします。 3. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で、この設定に指定する接続種別のいずれかを選択します。 - **MQTT3 URL Connection (MQTT3 URL 接続)** - **MQTT3 Fail-Over Connection (MQTT3 フェールオーバー接続)** - **MQTT3 Form Connection (MQTT3 フォーム接続)** 1. ブローカーへの MQTT 接続を識別する一意の直観的な ​**\[Client ID (クライアント ID)\]**​ を指定します (例: `smart-bentley-123`​)。 2. ブローカーに接続するための ​**\[URL\]**​ を指定します (例: `tcp://127.0.0.1:1883`​)。 3. **\[General (一般)\]**​ タブで接続情報 (ブローカーで必要なライブラリなど) も指定します。 4. **\[LWT\]**​ タブで、必要に応じて LWT (Last Will and Testament) メッセージを指定します。 5. **\[SSL/TLS\]**​ タブで、必要に応じて TLS 設定を指定します。 6. **\[Advanced (詳細)\]**​ タブで、必要に応じて接続の詳細オプションと再接続戦略を指定します。 7. **\[OK\]**​ をクリックして、ウィンドウを閉じます。 ![MQTT 3 Connector の \[Global Element Properties (グローバル要素プロパティ)\] ウィンドウ](_images/mqtt3-global-configuration.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​、​`clientId`​、および ​`url`​ の設定は次のように記述されます。 ```xml ``` **\[MQTT3 Form Connection (MQTT3 フォーム接続)\]**​ を設定することで、接続の各 URL 項目を別々に指定することもできます。これにより、ブローカーへの接続を確立するためのプロトコル、ホスト、およびポートを指定できます。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 Form Connection (MQTT3 フォーム接続)\]**​ を選択します。 6. 次の項目を設定します。 - **Client id generator (クライアント ID ジェネレーター)**​: `Client id random suffix generator` - **Client ID (クライアント ID)**​: `smart-bentley-123` - **Username (ユーザー名)**​: `username` - **Protocol (プロトコル)**​: **TCP (Default) (TCP (デフォルト))** - **URL**​: `127.0.0.1` - **Port (ポート)**​: `1883` 7. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでの MQTT 3 フォーム接続の設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-form-connection.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​、​`protocol`​、​`host`​、​`port`​、​`clientId`​ の設定は次のように記述されます。 ```xml ``` ## [](#configure-protocol)接続プロトコルの設定 MQTT では、ブローカーへの接続およびブローカーとの MQTT メッセージの交換に使用できるプロトコルがサポートされます。コネクタ設定の接続文字列で次のいずれかのプロトコルを設定できます。 - **LOCAL** - **SSL** - **TCP (デフォルト)** - **WS** - **WSS** ## [](#configure-authentication)認証用のログイン情報の設定 認証ログイン情報は省略可能ですが、必要に応じてユーザー名とパスワードを指定できます。 次の例では、基本的なユーザー名とパスワードを指定することで認証を設定します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 6. 次の項目を設定します。 - **Client id generator (クライアント ID ジェネレーター)**​: `Client id random suffix generator` - **Client ID (クライアント ID)**​: `smart-bentley-123` - **Username (ユーザー名)**​: `username` - **Password (パスワード)**​: `passtest` - **URL**​: `tcp://127.0.0.1:1883"` 7. **\[OK\]**​ をクリックします。 **\[Configuration XML (設定 XML)\]**​ エディターで、​``​、​`username`​、および ​`password`​ の設定は次のように記述されます。 ```xml ``` TLS コンテキストを設定し、クライアント証明書を指定して接続を認証することもできます。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[MQTT3 Config (MQTT3 設定)\]**​ を選択して ​**\[Edit (編集)\]**​ をクリックします。 3. **\[MQTT3 Config (MQTT3 設定)\]**​ で ​**\[SSL/TLS\]**​ をクリックします。 4. **\[TLS Context (TLS コンテキスト)\]**​ で、​**\[Edit Inline (インライン編集)\]**​ を選択します。 5. **\[Trust Store Configuration (トラストストア設定)\]**​ で、次の項目を設定します。 - **Path (パス)**​: `tls/truststore.jks` - **Password (パスワード)**​: `racing` - **型**​: `jks` 6. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでの MQTT の TLS コンテキストの設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-tls-configuration.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​、​`path`​、​`password`​、​`type`​ の設定は次のように記述されます。 ```xml ``` ## [](#configure-failover)フェールオーバーサーバーリストの設定 連携して動作する複数のブローカーで構成され、クライアントに複数の接続エンドポイントを提供する特定のデプロイメントスキーマがあります。クライアントが接続できる複数の使用可能なサーバーがある場合、2 つのシナリオが考えられます。各 MQTT サーバーが個別に動作するか、サーバーが連携して状態を共有する (クラスターモード) ことができます。この場合、再接続時の MQTT クライアントの動作を指定することが必要になる場合があります。 フェールオーバーサーバーリストを提供すると、コネクタは、提供されたいずれかのエンドポイントとの接続を正常に確立するまでリストを反復処理することができます。 次の例では、​**\[MQTT3 Fail-Over Connection (MQTT3 フェールオーバー接続)\]**​ のフェールオーバーサーバーリストを設定します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 Fail-Over Connection (MQTT3 フェールオーバー接続)\]**​ を選択します。 6. **\[Client ID (クライアント ID)\]**​ を ​`smart-bentley-123`​ に設定します。 7. **\[Fail over servers (フェールオーバーサーバー)\]**​ で、プラス記号 (​**+**​) をクリックします。 8. 次の項目を設定します。 - **Protocol (プロトコル)**​: **TCP (Default) (TCP (デフォルト))** - **Host (ホスト)**​: `127.9.0.2` - **Port (ポート)**​: `1883` 9. **\[Finish (完了)\]**​ をクリックします。 10. ステップ 7 ~ 9 を 2 回繰り返して、もう一方の新しいホストとポートの値を追加します。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでの MQTT 3 フェールオーバーサーバーリストの設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-failover-serverlist.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​ および ​` ``` ## [](#configure-clean-session)\[Clean Session (セッションをクリーンアップ)\] の値の設定 **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Clean session (セッションをクリーンアップ)\]**​ 項目を ​`False`​ に設定すると、ブローカーは次回接続するクライアントを記憶します。クライアントがオフラインになっている間は、クライアントが再接続されるまで、そのすべてのサブスクリプションが保存され、クライアントで受信する必要があるサービス品質 (QoS) 1 と 2 のメッセージも保存されます。 一部のブローカーでは、MQTT ブローカーのクラスタリングがサポートされ、各ノードで状態が共有されます。この場合、ノードのコネクタがオフラインになることがある場合は、\[セッションをクリーンアップ\] フラグを ​`False`​ に設定しておくと便利です。これにより、クライアントのサブスクリプションを認識している別のノードにクライアントを再接続できるため、オフライン中にコネクタで見逃した可能性があるすべてのメッセージが配信されます。 \[Clean Session (セッションをクリーンアップ)\] が ​`True (Default)`​ に設定されている場合、コネクタが切断されると、理由にかかわらずそのすべてのサブスクリプションが削除されるため、コネクタは再接続時に再度サブスクライブする必要があります。オフライン中に送信されたすべてのメッセージは失われます。 次の例では、\[Clean Session (セッションをクリーンアップ)\] を設定します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[MQTT3 Config (MQTT3 設定)\]**​ を選択して ​**\[Edit (編集)\]**​ をクリックします。 3. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ の ​**\[Advanced (詳細)\]**​ タブで、​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 4. 次の項目を設定します。 - **Clean session (セッションをクリーンアップ)**​: `False` 5. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでの MQTT の 「Clean session (セッションをクリーンアップ)」 の設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-cleansession.png) **設定 XML**​ エディターでは、​`cleanSession`​ 設定は次のように記述されます。 ```xml ``` ## [](#enable-file-persistence)Enable File Persistence (ファイル永続性を有効化) **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウで ​**\[Enable file persistence (ファイル永続性を有効化)\]**​ 項目を ​`True`​ に設定すると、MQTT クライアントはその状態をファイルに永続的に保持できます。このファイルは、クライアントに含まれている可能性のある QoS 1 以上のアウトバウンドまたはインバウンドインフライトメッセージの保存に使用されます。対照的に、この項目を ​`False (Default)`​ に設定すると、クライアントの状態はメモリにのみ保存されるため、クラッシュが発生すると、クライアントはその状態を復元できません。 \[Enable File Persistence (ファイル永続性を有効化)\] 機能では、オブジェクトストアは使用されません。このファイル機能は、ドライバーで永続的なメッセージ用にファイルを使用することに基づいており、オンプレミスインストールでのみ使用できます。 次の例では、ファイル永続性を有効化します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[MQTT3 Config (MQTT3 設定)\]**​ を選択して ​**\[Edit (編集)\]**​ をクリックします。 3. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 4. **\[Advanced (詳細)\]**​ タブで、次の項目を設定します。 - **Clean session (セッションをクリーンアップ)**​: **False** - **Enable file persistence (ファイル永続性を有効化)**​: **True** 5. **\[Datastore (データストア)\]**​ を ​`mqtt/store`​ に設定し、永続的なストアを生成する場所を指定します。 6. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでの MQTT 3 の 「Enable File Persistence (ファイル永続性を有効化)」 設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-enablefilepersistence.png) Figure 1. MQTT3 の \[Enable File Persistence (ファイル永続性を有効化)\] 設定 **\[Configuration XML (設定 XML)\]**​ エディターで、​`enableFilePersistence`​ および ​`dataStorePath`​ の設定は次のように記述されます。 ```xml ```
動的クライアント ID を設定した場合、MQTT Connector は、クラッシュが発生したときに、持続されたファイルを復元できません。クラッシュ後にアプリケーションが再起動しても変更されないクライアント ID を設定する必要があります。
## [](#configure-advanced-options)接続の詳細オプションの設定 MQTT Connector を使用すると、メッセージをコンシュームまたはパブリッシュするときに複数のデフォルトパラメーターを定義できます。この方法では、設定に関連するすべての操作のグローバルのデフォルト動作を定義できます。 次の例では、​**\[Keep alive internal (キープアライブ間隔)\]**​ 項目と ​**\[Keep alive internal unit (キープアライブ間隔単位)\]**​ 項目を設定し、クライアントとブローカー間でメッセージの交換がないまま接続を存続できる最大時間を設定します。また、​**\[Max in flight (最大インフライト)\]**​ 項目を設定し、許可される最大インフライトメッセージ数を示します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[MQTT3 Config (MQTT3 設定)\]**​ を選択して ​**\[Edit (編集)\]**​ をクリックします。 3. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 4. **\[Advanced (詳細)\]**​ タブを選択し、次の項目を設定します。 - **Keep alive internal (キープアライブ間隔)**​: `60` - **Keep Alive internal Unit (キープアライブ間隔単位)**​: **SECONDS (Default) (秒 (デフォルト))** - **Max in flight (最大インフライト)**​: `60` 5. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでの MQTT3 Connector の接続の詳細設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-advanced-connection.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​`keepAliveInterval`​、​`keepAliveIntervalUnit`​、および ​`maxInFlight`​ の設定は次のように記述されます。 ```xml ``` ## [](#view-app-log)アプリケーションログの表示 問題を確認するため、アプリケーションログを次の方法で表示できます。 - アプリケーションを Anypoint Platform から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。 - コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。 アプリケーションのログファイル (​`log4j2.xml`​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​`MULE_HOME/logs/.log`​ でアプリケーションログを表示することもできます。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Anypoint Studio を使用したコネクタの設定](https://docs.mulesoft.com/connectors/introduction/intro-config-use-studio) - [MQTT Connector リファレンス](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector 1.0 MQTT 用 Anypoint Connector (MQTT Connector) は、MQTT (Message Queuing Telemetry Transport) v3.x プロトコル準拠の MuleSoft 拡張機能です。MQTT は、小さなコードのフットプリントと最小のネットワーク帯域幅を使用してリモートデバイスを接続することを目的として設計された軽量のパブリッシュ/サブスクライブメッセージングプロトコルです。現在、MQTT は、自動車、製造、電気通信、石油ガスなど、さまざまな業種で使用されています。 このコネクタでは、MQTT v3.x プロトコルで指定された機能がサポートされます。この機能には、信頼性の高いメッセージ配信、永続的なセッション、信頼性の低い低帯域幅ネットワークのサポート、メッセージ保持、LWT (Last Will and Testament) メッセージが含まれますが、これらに限定されません。このコネクタでは、MQTT ブローカーとの安全な接続および通信を行うための TLS がサポートされます。 互換性と解決された問題に関する情報は、「MQTT Connector リリースノート」を参照してください。 ## [](#始める前に)始める前に このコネクタを使用するには、以下に精通している必要があります。 - MQTT v3.x プロトコル - Anypoint Connector - Mule Runtime Engine (Mule) - Mule フローの要素とグローバル要素 - Anypoint Studio (Studio) を使用した Mule アプリケーションの作成 アプリケーションを作成するには、Anypoint Platform および Anypoint Studio が必要です。 ## [](#コネクタの一般的なユースケース)コネクタの一般的なユースケース MQTT バージョン 3.x プロトコルに基づく MQTT Connector の一般的ないくつかのユースケースを次に示します。 - 接続が正常に確立されるまでクライアントで反復処理されるフェールオーバーサーバーリストを指定して、MQTT ブローカーに接続します。 - 信頼性の高いメッセージングスキーマで MQTT ブローカーに接続し、メッセージをパブリッシュします。 - MQTT ブローカーに接続し、すべてのサブスクライバーにクライアントの切断を通知するように LWT (Last Will and Testament) メッセージを設定します。 - トランスポート層セキュリティ (TLS) を使用して MQTT ブローカーに接続し、メッセージをリスンします。 - 1 つまたは複数のトピックでメッセージをリスンします。 - 単一レベルまたはマルチレベルのワイルドカードを使用して、複数のトピックでメッセージをリスンします。 - トピックにメッセージをパブリッシュします。 - 保持を使用してメッセージをパブリッシュします。 - メッセージを MQTT トピックにパブリッシュし、インバウンドまたはアウトバウンドメッセージの配信保証のさまざまなサービス品質 (QoS) レベルを設定します。 ## [](#mqtt-アーキテクチャ)MQTT アーキテクチャ MQTT ではパブリッシュ/サブスクライブモデルが使用されます。このモデルでは、クライアントは、​`Topic`​ と呼ばれる特定のアドレスにメッセージをパブリッシュします。クライアントのレシーバーはトピックをサブスクライブし、パブリッシュされたメッセージを受信します。このモデルでは、パブリッシャーもサブスクライバーもお互いを認識していません。パブリッシャーとサブスクライバー間の接続は MQTT ブローカーによって管理されます。 ### [](#mqtt-クライアント)MQTT クライアント MQTT クライアントは、MQTT ライブラリを実行し、ネットワーク経由で MQTT サーバーに接続する任意のデバイスです。 ### [](#mqtt-ブローカー)MQTT ブローカー MQTT ブローカーは、クライアントからメッセージを受信して、そのメッセージを適切な宛先クライアントにルーティングするサーバーです。 ### [](#mqtt-トピック)MQTT トピック ブローカーが郵便局としての機能を果たすため、MQTT では目的の受信者のアドレスを使用しませんが、​`Topic`​ と呼ばれる件名行を使用します。このメッセージのコピーを必要とするすべてのユーザーがそのトピックをサブスクライブします。1 つのブローカーから複数のクライアントがメッセージを受信できます (一対多)。 ## [](#次のステップ)次のステップ 前提条件を満たしたら、​[Anypoint Studio](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-studio-configuration)​ で独自のアプリケーションを作成してコネクタを設定できます。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Exchange を使用したコネクタ、テンプレート、およびサンプルの検出](https://docs.mulesoft.com/connectors/introduction/intro-use-exchange) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector 1.0 リファレンス MQTT 用 Anypoint Connector (MQTT Connector) は、MQTT (Message Queuing Telemetry Transport) v3.x プロトコル準拠の MuleSoft 拡張機能です。MQTT は、小さなコードのフットプリントと最小のネットワーク帯域幅を使用してリモートデバイスを接続することを目的として設計された軽量のパブリッシュ/サブスクライブメッセージングプロトコルです。現在、MQTT は、自動車、製造、電気通信、石油ガスなど、さまざまな業種で使用されています。 このコネクタは MQTT メッセージをコンシュームおよび生成し、メッセージの保持、LWT メッセージ、永続的なセッションを含めすべての l MQTT v3.x 機能をサポートします。 ## [](#設定)設定 * * * ### [](#Config)設定 デフォルト設定。 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

Connection (接続)

この設定の接続種別。

x

Name (名前)

String (文字列)

他のコンポーネント内のこの要素を参照するために使用するこの要素の識別子。

x

Expiration Policy (有効期限ポリシー)

設定の有効期限ポリシーを設定します。

#### [](#接続種別)接続種別 ##### [](#Config_Connection)MQTT 3 URL Connection (MQTT 3 URL 接続) MQTT 接続を作成するキャッシュされた接続プロバイダー。ブローカーの接続 URL を指定できます。 ###### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Client ID Generator (クライアント ID ジェネレーター)

MQTT ブローカーへの接続を識別するためのクライアント ID を生成するクライアント ID ジェネレーター。

x

Username (ユーザー名)

String (文字列)

MQTT ブローカーへのログイン情報を認証するためのユーザー名。

Password (パスワード)

String (文字列)

MQTT ブローカーへのログイン情報を認証するためのパスワード。

URL

String (文字列)

接続先のブローカーを表す URL。

TLS Context

TLS

Topic (トピック)

String (文字列)

LWTmessage をパブリッシュするためのトピック。

Body (本文)

String (文字列)

LWTmessage のコンテンツ。

QoS

Enumeration (列挙)。次のいずれかになります。

  • AT_MOST_ONCE​

  • AT_LEAST_ONCE​

  • EXACTLY_ONCE

LWTmessage のパブリッシュで使用するサービス品質 (QoS)。デフォルトは ​AT_LEAST_ONCE​ です。

AT_LEAST_ONCE

Is Retained (保持)

Boolean (ブール)

true​ に設定されている場合、ブローカーで LWTmessage を保持します。

false

Connection Timeout (接続タイムアウト)

Number (数値)

ソケット接続タイムアウト値。この属性は、​timeoutUnit​ と連携して機能します。複数のフェールオーバー URL が指定されている場合、タイムアウトは各 URL に個別に適用されます。

30

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

[Connection Timeout (接続タイムアウト)]​ 項目の時間単位。

SECONDS

Keep Alive Interval (キープアライブ間隔)

Number (数値)

クライアントとブローカー間でメッセージの交換がないまま接続を存続できる時間。キープアライブ間隔が 0 の場合、キープアライブメカニズムは無効になります。

0

Keep Alive Interval Unit (キープアライブ間隔単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

keepAliveInterval​ パラメーターに対応する時間単位。デフォルトは SECONDS (秒) です。

SECONDS

Max In Flight (最大インフライト)

Number (数値)

任意の時点で肯定応答されていない状態で存在できるメッセージの最大数。パラメーターを ​0​ に設定した場合、無制限のインフライトメッセージが存在できます。

10

Clean Session (セッションをクリーンアップ)

Boolean (ブール)

true​ に設定されている場合、クライアントがブローカーから切断されるたびにセッションがクリーンアップされます。サブスクリプションは保存されず、そのクライアントのオフライン (QoS 1 および 2) メッセージは失われます。

true

Enable File Persistence (ファイル永続性を有効化)

Boolean (ブール)

true​ に設定されている場合、ファイルベースの永続的なデータストアが作成されます。このデータストアはインフライト中のアウトバウンドメッセージとインバウンドメッセージを保存するために使用され、指定された QoS への配信を可能にします。

false

Data Store Path (データストアのパス)

String (文字列)

enableFilePersistence​ が ​true​ に設定されている場合、ファイルベースの永続的なデータストアが作成されるディレクトリ。

Reconnection (再接続)

アプリケーションがデプロイされると、すべてのコネクタで接続テストが実行されます。​true​ に設定されている場合、関連する再接続戦略をすべて実行した後にテストに合格しないと、デプロイメントが失敗します。

##### [](#Config_FailOver)MQTT 3 Fail-Over Connection (MQTT 3 フェールオーバー接続) ###### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Client ID Generator (クライアント ID ジェネレーター)

MQTT ブローカーへの接続を識別するためのクライアント ID を生成する ClientIDGenerator。

x

Username (ユーザー名)

String (文字列)

MQTT ブローカーへのログイン情報を認証するためのユーザー名。

Password (パスワード)

String (文字列)

MQTT ブローカーへのログイン情報を認証するためのパスワード。

Fail Over Servers (フェールオーバーサーバー)

ブローカーへの接続を確立するために使用するサーバー URL のリスト。

x

TLS Context

TLS

Topic (トピック)

String (文字列)

LWTmessage をパブリッシュするためのトピック。

Body (本文)

String (文字列)

LWTmessage のコンテンツ。

QoS

Enumeration (列挙)。次のいずれかになります。

  • AT_MOST_ONCE​

  • AT_LEAST_ONCE​

  • EXACTLY_ONCE

LWTmessage のパブリッシュで使用するサービス品質 (QoS)。デフォルトは ​AT_LEAST_ONCE​ です。

AT_LEAST_ONCE

Is Retained (保持)

Boolean (ブール)

true​ に設定されている場合、ブローカーで LWTmessage を保持します。

false

Connection Timeout (接続タイムアウト)

Number (数値)

ソケット接続タイムアウト値。この属性は、​timeoutUnit​ と連携して機能します。複数のフェールオーバー URL が指定されている場合、タイムアウトは各 URL に個別に適用されます。

30

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

[Connection Timeout (接続タイムアウト)]​ 項目の時間単位。デフォルトは SECONDS (秒) です。

SECONDS

Keep Alive Interval (キープアライブ間隔)

Number (数値)

クライアントとブローカー間でメッセージの交換がないまま接続を存続できる時間。キープアライブ間隔が ​0​ の場合、キープアライブメカニズムは無効になります。

0

Keep Alive Interval Unit (キープアライブ間隔単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

keepAliveInterval​ パラメーターに対応する時間単位。デフォルトは SECONDS (秒) です。

SECONDS

Max In Flight (最大インフライト)

Number (数値)

任意の時点で肯定応答されていない状態で存在できるメッセージの最大数。パラメーターを ​0​ に設定した場合、無制限のインフライトメッセージが存在できます。

10

Clean Session (セッションをクリーンアップ)

Boolean (ブール)

true​ に設定されている場合、クライアントがブローカーから切断されるたびにセッションがクリーンアップされます。サブスクリプションは保存されず、そのクライアントのオフライン (QoS 1 および 2) メッセージは失われます。

true

Enable File Persistence (ファイル永続性を有効化)

Boolean (ブール)

true​ に設定されている場合、ファイルベースの永続的なデータストアが作成されます。このデータストアはインフライト中のアウトバウンドメッセージとインバウンドメッセージを保存するために使用され、指定された QoS への配信を可能にします。

false

Data Store Path (データストアのパス)

String (文字列)

enableFilePersistence​ が ​true​ に設定されている場合、ファイルベースの永続的なデータストアが作成されるディレクトリ。

Reconnection (再接続)

アプリケーションがデプロイされると、すべてのコネクタで接続テストが実行されます。​true​ に設定されている場合、関連する再接続戦略をすべて実行した後にテストに合格しないと、デプロイメントが失敗します。

##### [](#ConfigForm)MQTT 3 Form Connection (MQTT 3 フォーム接続) MQTT 接続を作成するキャッシュされた接続プロバイダー。ブローカーへの接続を確立するためのプロトコル、ホスト、およびポートを指定できます。 ###### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Client ID Generator (クライアント ID ジェネレーター)

MQTT ブローカーへの接続を識別するためのクライアント ID を生成するクライアント ID ジェネレーター。

x

Username (ユーザー名)

String (文字列)

MQTT ブローカーへのログイン情報を認証するためのユーザー名。

Password (パスワード)

String (文字列)

MQTT ブローカーへのログイン情報を認証するためのパスワード。

Protocol (プロトコル)

Enumeration (列挙)。次のいずれかになります。

  • TCP

  • WS

  • WSS

  • SSL

  • LOCAL

ブローカーへの接続時に使用するトランスポートレベルのプロトコル。

TCP

URL

String (文字列)

接続先のブローカーのホスト。

x

Port (ポート)

String (文字列)

接続先のブローカーのポート

1883

TLS Context

TLS

Topic (トピック)

String (文字列)

LWTmessage をパブリッシュするためのトピック。

Body (本文)

String (文字列)

LWTmessage のコンテンツ。

QoS

Enumeration (列挙)。次のいずれかになります。

  • AT_MOST_ONCE​

  • AT_LEAST_ONCE​

  • EXACTLY_ONCE

LWTmessage のパブリッシュで使用するサービス品質 (QoS)。デフォルトは ​AT_LEAST_ONCE​ です。

AT_LEAST_ONCE

Is Retained (保持)

Boolean (ブール)

true​ に設定されている場合、ブローカーで LWTmessage を保持します。

false

Connection Timeout (接続タイムアウト)

Number (数値)

ソケット接続タイムアウト値。この属性は、​timeoutUnit​ と連携して機能します。複数のフェールオーバー URL が指定されている場合、タイムアウトは各 URL に個別に適用されます。

30

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

[Connection Timeout (接続タイムアウト)]​ 項目の時間単位。デフォルトは SECONDS (秒) です。

SECONDS

Keep Alive Interval (キープアライブ間隔)

Number (数値)

クライアントとブローカー間でメッセージの交換がないまま接続を存続できる時間。キープアライブ間隔が ​0​ の場合、キープアライブメカニズムは無効になります。

0

Keep Alive Interval Unit (キープアライブ間隔単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

keepAliveInterval​ パラメーターに対応する時間単位。

SECONDS

Max In Flight (最大インフライト)

Number (数値)

任意の時点で肯定応答されていない状態で存在できるメッセージの最大数。パラメーターを ​0​ に設定した場合、無制限のインフライトメッセージが存在できます。

10

Clean Session (セッションをクリーンアップ)

Boolean (ブール)

true​ に設定されている場合、クライアントがブローカーから切断されるたびにセッションがクリーンアップされます。サブスクリプションは保存されず、そのクライアントのオフライン (QoS 1 および 2) メッセージは失われます。

true

Enable File Persistence (ファイル永続性を有効化)

Boolean (ブール)

true​ に設定されている場合、ファイルベースの永続的なデータストアが作成されます。このデータストアはインフライト中のアウトバウンドメッセージとインバウンドメッセージを保存するために使用され、指定された QoS への配信を可能にします。

false

Data Store Path (データストアのパス)

String (文字列)

enableFilePersistence​ が ​true​ に設定されている場合、ファイルベースの永続的なデータストアが作成されるディレクトリ。

Reconnection (再接続)

アプリケーションがデプロイされると、すべてのコネクタで接続テストが実行されます。​true​ に設定されている場合、関連する再接続戦略をすべて実行した後にテストに合格しないと、デプロイメントが失敗します。

#### [](#関連操作)関連操作 - [Publish](#Publish) #### [](#関連付けられたソース)関連付けられたソース - [新規メッセージ](#Listener) ## [](#操作)操作 ### [](#Publish)Publish `` 単一の MQTT 3 メッセージを任意のエクスチェンジにパブリッシュできるようにする操作。 ### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Topic (トピック)

String (文字列)

メッセージのパブリッシュ先のトピック。

x

Message (メッセージ)

Any (任意)

パブリッシュするメッセージのコンテンツ。

#[payload]

QoS

Enumeration (列挙)。次のいずれかになります。

  • AT_MOST_ONCE​

  • AT_LEAST_ONCE​

  • EXACTLY_ONCE

メッセージのパブリッシュで使用するサービス品質 (QoS)。

AT_LEAST_ONCE

Is Retained (保持)

Boolean (ブール)

ブローカーでメッセージを保持するかどうか。

false

Config Ref (設定参照)

ConfigurationProvider

コンポーネントを実行するための設定の名前。

x

Reconnection Strategy (再接続戦略)

接続エラーが発生した場合の再試行戦略。

### [](#次の設定の場合)次の設定の場合 - [設定](#Config) ### [](#スロー)スロー - MQTT3:CONNECTIVITY メッセージのパブリッシュ中にクライアントがブローカーから切断されました。 - MQTT3:INVALID\_TOPIC トピックが無効です。たとえば、名前が短すぎるか、名前が長すぎるか、名前に無効な文字が含まれます。 - MQTT3:PERSISTENCE メッセージのパブリッシュ時に、信頼性の高いメッセージング用の永続的なデータの読み取りまたは書き込み中にエラーが発生しました。 - MQTT3:PUBLISH メッセージのパブリッシュ中にエラーが発生しました。 - MQTT3:RETRY\_EXHAUSTED すべての再接続の試行に失敗しました。 - MQTT3:WRITE\_TIMEOUT サーバーへのメッセージの書き込みを待機している間にクライアントがタイムアウトしてエラーが発生しました。 ## [](#ソース)ソース ### [](#Listener)新規メッセージ `` 1 つ以上のトピック検索条件に対応する新しい受信メッセージをリスンするソース。各トピック検索条件には特定の QoS が設定されています。 ### [](#パラメーター-6)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Topics

Topic (トピック)​ の配列

リスナーでサブスクライブするトピックのリスト。

x

Config Ref (設定参照)

ConfigurationProvider

コンポーネントを実行するための設定の名前。

x

Primary Node Only (プライマリノードのみ)

Boolean (ブール)

クラスターでの Mule インスタンスの実行時、ソースをプライマリノード上でのみ実行するかどうかを決定します。

Redelivery Policy (再配信ポリシー)

同じメッセージの再配信を処理するためのポリシーを定義します。

Reconnection Strategy (再接続戦略)

接続エラーが発生した場合の再試行戦略。

### [](#出力)出力

型

Any (任意)

Attributes Type (属性型)

### [](#次の設定の場合-2)次の設定の場合 - [設定](#Config) ## [](#型)型 ### [](#Tls)TLS Mule アプリケーションのセキュアな通信を提供するように TLS を設定します。
項目 型 説明 デフォルト値 必須

Enabled Protocols (有効化されたプロトコル)

String (文字列)

このコンテキストで有効化されたプロトコルのカンマ区切りリスト。

Enabled Cipher Suites (有効化された暗号化スイート)

String (文字列)

このコンテキストで有効化された暗号化スイートのカンマ区切りリスト。

Trust Store (トラストストア)

Key Store (キーストア)

Revocation Check (取り消し確認)

### [](#TrustStore)トラストストア TLS 用のトラストストアを設定します。
項目 型 説明 デフォルト値 必須

Path (パス)

String (文字列)

トラストストアへのパス。Mule では、可能であれば、現在のクラスパスとファイルシステムへの相対的なパスを解決します。

Password (パスワード)

String (文字列)

トラストストアを保護するために使用するパスワード。

Type (型)

String (文字列)

トラストストアの型。

Algorithm (アルゴリズム)

String (文字列)

トラストストアで使用する暗号化アルゴリズム。

Insecure (安全ではない)

Boolean (ブール)

​true​ の場合、証明書の検証が実行されず、攻撃に対して接続が脆弱になります。各自の責任で使用してください。

### [](#KeyStore)Key Store (キーストア) TLS プロトコル用のキーストアを設定します。生成したキーストアには、非公開キーと公開証明書が格納されます。
項目 型 説明 デフォルト値 必須

Path (パス)

String (文字列)

キーストアへのパス。Mule では、可能であれば、現在のクラスパスとファイルシステムへの相対的なパスを解決します。

Type (型)

String (文字列)

キーストアの型。

Alias (別名)

String (文字列)

キーストアに複数の非公開キーが含まれている場合に使用するキーの別名。デフォルトでは、Mule はファイル内の最初のキーを使用します。

Key Password (キーパスワード)

String (文字列)

非公開キーを保護するために使用するパスワード。

Password (パスワード)

String (文字列)

キーストアを保護するために使用するパスワード。

Algorithm (アルゴリズム)

String (文字列)

キーストアで使用する暗号化アルゴリズム。

### [](#StandardRevocationCheck)Standard Revocation Check (標準の取り消し確認) TLS 証明書の標準取り消し確認を設定します。
項目 型 説明 デフォルト値 必須

Only End Entities (最後のエンティティのみ)

Boolean (ブール)

証明書チェーンの最後の要素のみを確認します。

Prefer Crls (CRL を優先)

Boolean (ブール)

最初に OCSP ではなく CRL を試みます。

No Fallback (代替なし)

Boolean (ブール)

第 2 の確認方法 ([Prefer Crls (CRL を優先)] 項目で指定されていない方法) を使用しません。

Soft Fail (ソフトフェール)

Boolean (ブール)

取り消しサーバーに到達できない場合や取り消しサーバーが混雑している場合に検証エラーを回避します。

### [](#CustomOcspResponder)Custom OCSP Responder (カスタム OCSP レスポンダー) 証明書の取り消し確認のカスタム OCSP レスポンダーを設定します。
項目 型 説明 デフォルト値 必須

Url

String (文字列)

OCSP レスポンダーの URL。

Cert Alias (証明書の別名)

String (文字列)

OCSP 応答の署名証明書の別名。指定した場合、別名はトラストストアに存在する必要があります。

### [](#CrlFile)CRL File (CRL ファイル) 証明書失効リスト (CRL) ファイルの場所を指定します。
項目 型 説明 デフォルト値 必須

Path (パス)

String (文字列)

CRL ファイルへのパス。

### [](#Reconnection)Reconnection (再接続) 操作の再接続戦略を設定します。
項目 型 説明 デフォルト値 必須

Fails Deployment (デプロイメントに失敗)

Boolean (ブール)

アプリケーションがデプロイされると、すべてのコネクタで接続テストが実行されます。​true​ に設定されている場合、関連する再接続戦略をすべて実行した後にテストに合格しないと、デプロイメントが失敗します。

Reconnection Strategy (再接続戦略)

使用する再接続戦略。

### [](#Reconnect)Reconnect (再接続) 標準再接続戦略を設定し、再接続の頻度と、コネクタソースまたは操作で実行できる再接続の試行回数を指定します。
項目 型 説明 デフォルト値 必須

Frequency (頻度)

Number (数値)

再接続する頻度 (ミリ秒)。

Blocking (ブロック)

Boolean (ブール)

​false​ の場合、再接続戦略が個別の非ブロックスレッドで実行されます。

Count (数)

Number (数値)

再接続の試行回数。

### [](#ReconnectForever)Reconnect Forever (繰り返し再接続) 繰り返し再接続戦略を設定します。この戦略では、Mule アプリケーションが実行されている限り、コネクタ操作のソースまたは操作で、指定した頻度で再接続を試行します。
項目 型 説明 デフォルト値 必須

Frequency (頻度)

Number (数値)

再接続を試行する頻度 (ミリ秒)。

Blocking (ブロック)

Boolean (ブール)

​false​ の場合、再接続戦略が個別の非ブロックスレッドで実行されます。

### [](#FailOverUrl)Fail Over URL (フェールオーバー URL)
項目 型 説明 デフォルト値 必須

Protocol (プロトコル)

Enumeration (列挙)。次のいずれかになります。

  • TCP

  • WS

  • WSS

  • SSL

  • LOCAL

ブローカーへの接続時に使用するトランスポートレベルのプロトコル。

TCP

Host (ホスト)

String (文字列)

接続先のブローカーのホスト。

localhost

Port (ポート)

String (文字列)

接続先のブローカーのポート。

1883

### [](#ExpirationPolicy)Expiration Policy (有効期限ポリシー) 動的設定インスタンスがアイドル状態を続けられる最小時間を設定します。この時間が経過すると、Mule Runtime で期限切れに相当するとみなされます。
項目 型 説明 デフォルト値 必須

Max Idle Time (最大アイドル時間)

Number (数値)

有効期限の対象とみなされるまで、動的設定インスタンスがアイドル状態を維持できる最大時間のスカラー時間値。

Time Unit (時間単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

​[Max Idle Time (最大アイドル時間)]​ 項目の時間単位。

### [](#Mqtt3MessageAttributes)MQTT 3 メッセージ属性
項目 型 説明 デフォルト値 必須

Topic (トピック)

String (文字列)

ブローカーで転送されたメッセージの転送先のトピック。

x

Message Id (メッセージ ID)

Number (数値)

ブローカーから受信したメッセージを識別する MQTT ID。

x

QoS

Number (数値)

ブローカーにより配信されたメッセージのサービス品質。

x

Is Duplicate (重複)

Boolean (ブール)

​true​ に設定されている場合、メッセージは別の受信済みメッセージと重複することができます。

​false​

Is Retained (保持)

Boolean (ブール)

​true​ に設定されている場合、メッセージは現在のパブリッシャーから送信されたか、トピックに対してパブリッシュされた最後のメッセージとしてサーバーにより保持されました。

​false​

### [](#Topic)Topic (トピック)
項目 型 説明 デフォルト値 必須

Topic Filter (トピック検索条件)

String (文字列)

トピックの単一レベルまたはマルチレベルのサブスクリプションを表すトピック検索条件。

x

QoS

Enumeration (列挙)。次のいずれかになります。

  • AT_MOST_ONCE

  • AT_LEAST_ONCE

  • EXACTLY_ONCE​

ブローカーはこのサービス品質 (QoS) で、トピックの ​[Topic filter (トピック検索条件)]​ 項目に向けられたメッセージを送信する必要があります。

​AT_LEAST_ONCE​

### [](#RedeliveryPolicy)Redelivery Policy (再配信ポリシー) エラーを生成する要求を実行するための再配信ポリシーを設定します。再配信ポリシーは、フロー内のあらゆる提供元に追加できます。
項目 型 説明 デフォルト値 必須

Max Redelivery Count (最大再配信数)

Number (数値)

​REDELIVERY_EXHAUSTED​ エラーが返されるまでに、配信された要求が処理に失敗できる最大回数。

Message Digest Algorithm (メッセージダイジェストアルゴリズム)

String (文字列)

​[Use Secure Hash (セキュアハッシュを使用)]​ 項目が ​true​ の場合に使用するセキュアハッシュアルゴリズム。メッセージのペイロードが Java オブジェクトの場合、Mule ではこの値が無視され、ペイロードの ​hashCode()​ が返した値が返されます。

Message Identifier (メッセージ識別子)

メッセージを識別するための戦略を定義します。

Object Store (オブジェクトストア)

ObjectStore

各メッセージの再配信カウンターが保存されるオブジェクトストアを設定します。

### [](#RedeliveryPolicyMessageIdentifier)Redelivery Policy Message Identifier (再配信ポリシーメッセージ識別子) 再配信されたメッセージを識別する方法と、メッセージがいつ再配信されたのかを見つける方法を設定します。
項目 型 説明 デフォルト値 必須

Use Secure Hash (セキュアハッシュを使用)

Boolean (ブール)

​true​ の場合、Mule では再配信されたメッセージの識別にセキュアハッシュアルゴリズムを使用します。

Id Expression (ID 式)

String (文字列)

メッセージがいつ再配信されたのかを判断する 1 つ以上の式。このプロパティは、​[Use Secure Hash (セキュアハッシュを使用)]​ 項目が ​false​ の場合にのみ設定できます。

### [](#ClientIdRandomSuffixGenerator)Client ID Random Suffix Generator (クライアント ID ランダムサフィックスジェネレーター)
項目 型 説明 デフォルト値 必須

Client Id (クライアント ID)

String (文字列)

MQTT ブローカーへの接続を識別するためのクライアント ID。

### [](#ClientIdCustomExpressionGenerator)Client ID Custom Expression Generator (クライアント ID カスタム式ジェネレーター)
項目 型 説明 デフォルト値 必須

Client Id (クライアント ID)

String (文字列)

MQTT ブローカーへの接続を識別するためのクライアント ID。

Custom Client Id Suffix (カスタムクライアント ID サフィックス)

String (文字列)

MQTT ブローカーへの接続を識別するために使用するカスタムクライアント ID サフィックス。

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector に関する FAQ MQTT Connector に関するよくある質問 (FAQ) を次に示します。 ## [](#mqtt-connector-では-enable-file-persistence-ファイル永続性を有効化-機能でオブジェクトストアを使用しますか)MQTT Connector では \[Enable File Persistence (ファイル永続性を有効化)\] 機能でオブジェクトストアを使用しますか? **\[Enable file persistence (ファイル永続性を有効化)\]**​ 機能はオンプレミスインストールでのみ使用でき、永続的なメッセージ用にファイルを使用します。オブジェクトストアでは、CloudHub アプリケーション用の永続的なストレージが可能になります。詳細は、​[オブジェクトストア](https://docs.mulesoft.com/jp/object-store/)​のドキュメントを参照してください。 ## [](#mqtt-connector-は-cloudhub-とクラスター環境でサポートされますか)MQTT Connector は CloudHub とクラスター環境でサポートされますか? はい、MQTT Connector は CloudHub とクラスター環境でサポートされます。 ## [](#mqtt-connector-はクラスター対応ですか)MQTT Connector はクラスター対応ですか? MQTT Connector はクラスター対応です。通常、MQTT ブローカーでは、既存の (古い) 接続と同じクライアント ID を使用する新しい接続要求を受信した場合に古い接続を閉じて新しい接続を受け入れるクライアントテークオーバーメカニズムが実装されます。 アプリケーションをクラスターにデプロイし、クライアントを識別する明示的なクライアント ID を提供する場合、このクライアントテークオーバーメカニズムが問題になる可能性があります。MQTT Connector により提供されるクライアント ID ジェネレーターを使用して、ユーザーは静的クライアント ID を設定したり、動的コンポーネントを使用するクライアント ID を設定してさまざまなデプロイメントシナリオに対応したり、カスタムクライアント ID ジェネレーターを定義したりできます。 詳細は、​[「MQTT Connector を使用したクライアント ID の設定」](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-client-id)​を参照してください。 ## [](#サポートされる認証種別は)サポートされる認証種別は? MQTT Connector 認証ではユーザーとパスワード、および証明書ベースの認証 (TLS または WSS) がサポートされます。​[「認証用のログイン情報の設定」](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-studio-configuration#configure-authentication)​を参照してください。 ## [](#mqtt-connector-では接続と操作の実行が追跡されますか)MQTT Connector では接続と操作の実行が追跡されますか? コネクタ、Eclipse Paho ドライバー、Mosquitto ブローカーの DEBUG モードでの冗長ログを有効にする方法は、​[「MQTT Connector のトラブルシューティング」](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-troubleshooting)​を参照してください。 ## [](#mqtt-connector-を動作するために必要なサーバー側の設定は)MQTT Connector を動作するために必要なサーバー側の設定は? MQTT Connector は、任意の MQTT バージョン 3.x 準拠のサーバー (MQTT ブローカーとも呼ばれる) で動作します。 このサーバーを設定するには、MQTT ブローカーのドキュメント ( [Eclipse Mosquitto](https://mosquitto.org/documentation)​ ブローカーのドキュメントなど) を参照してください。 ## [](#mqtt-connector-では外部システムとの接続にサードパーティライブラリを使用しますか)MQTT Connector では、外部システムとの接続にサードパーティライブラリを使用しますか? MQTT Connector では Eclipse Mosquitto ライブラリを使用します。ArtifactID は ​`org.eclipse.paho.client.mqttv3`​ です。 ## [](#eclipse-mosquitto-外部ライブラリに関するドキュメントやリリースノートはありますか)Eclipse Mosquitto 外部ライブラリに関するドキュメントやリリースノートはありますか? Eclipse Mosquitto ライブラリのリリースノートを取得するには、 [Eclipse 公開リポジトリ](https://github.com/eclipse/paho.mqtt.java/releases)​を参照してください。 ## [](#mqtt-connector-を使用しログイン情報を使用して接続するのにブローカー側で必要な権限ロールまたは追加の設定はありますか)MQTT Connector を使用し、ログイン情報を使用して接続するのに、ブローカー側で必要な権限、ロール、または追加の設定はありますか? いいえ、MQTT バージョン 3.x 準拠の MQTT ブローカーに接続するための追加の権限や設定要件はありません。MQTT ブローカー側では、リスナーを適切に設定する必要があります。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector の LWT (Last Will And Testament) メッセージの設定 この例では、クライアントがブローカーから一時的または完全に切断された場合にメッセージを特定の LWT トピックのすべてのサブスクライバーに送信するように MQTT 用 Anypoint Connector (MQTT Connector) の LWT (Last Will and Testament) メッセージを設定します。LWT メッセージは、ブローカーへの接続が確立された時点で送信されます。 設定要素で LWT メッセージを設定し、ブローカーでそのメッセージを保持するかどうかを指定します。 保持するように MQTT メッセージが設定されている場合、ブローカーは、特定のトピックに送信された、保持としてマークされた最後のメッセージを保存します。メッセージが送信された時点で、一致するトピックをサブスクライブしているリスナーがない場合、ブローカーは 1 つのリスナーがそのトピックを接続するまでメッセージを保存します。その後、ブローカーはそのトピックに関して保持されている最後のメッセージをリスナーに配信します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ > ​**\[Connection (接続)\]**​ で ​**\[MQTT3 Form Connection (MQTT3 フォーム接続)\]**​ を選択します。 6. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Client id random suffix generator (クライアント ID ランダムサフィックスジェネレーター)\]**​ を選択します。 7. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `smart-bentley-123` - **Username (ユーザー名)**​: `usertest` - **Password (パスワード)**​: `passtest` - **URL**​: `tcp://127.0.0.1:1883` 8. **\[LWT\]**​ をクリックします。 9. 次の項目を設定します。 - **Topic (トピック)**​: `LWT` - **Body (本文)**​: `Testing body message` - **Is retained (保持)**​: **True** 10. **\[OK\]**​ をクリックします。 ![「Last Will and Testament」 設定ウィンドウが選択されている 「MQTT Config (MQTT 設定)」 ウィンドウ](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-lwt-configuration.png) **設定 XML**​ エディターでは、​``​ 設定は次のように記述されます。 ```xml ``` ## [](#関連情報)関連情報 - [MQTT Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションからコネクタにアクセスできます。 Studio でコネクタを追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力し、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/mqtt3 http://www.mulesoft.org/schema/mule/mqtt3/current/mule-mqtt3.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml com.mulesoft.connectors mule4-mqtt3-connector x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`mqtt3 connector`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#次のステップ)次のステップ 名前空間および ​`pom.xml`​ ファイルを完了したら、​[例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples)​を試すことができます。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector のサービス品質の設定 MQTT プロトコルを使用すると、インバウンドまたはアウトバウンドメッセージの配信保証のレベルを指定できます。このレベルを​_サービス品質_​ (QoS) と呼びます。 MQTT Connector で設定できる QoS レベルを次に示します。 - **AT\_MOST\_ONCE** メッセージが最大で 1 回配信され (「ファイヤアンドフォゲット」)、配信は保証されません。 - **AT\_LEAST\_ONCE** メッセージが少なくとも 1 回正しく配信されます。メッセージが複数回配信される可能性があります。 - **EXACTLY\_ONCE** メッセージが 1 回配信され、配信が保証されます。 パブリッシュされたメッセージとサブスクリプションに共通のトピックが含まれている場合でも、メッセージのパブリッシュとメッセージのサブスクライブでサービス品質が異なることがあります。たとえば、該当のリスナーソースが QoS ​**AT\_MOST\_ONCE**​ (QoS=0) でサブスクライブしている場合、QoS 1 または 2 でパブリッシュされたメッセージは ​**On New Message**​ ソースに正常に配信されない可能性があります。 ## [](#関連情報)関連情報 - [MQTT3 Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector のトラブルシューティング MQTT 用 Anypoint Connector (MQTT Connector) のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 コネクタの冗長ログを有効化するには、コネクタと Eclipse Paho ドライバーのログをアクティブ化する必要があります。 ### [](#mqtt-connector-の冗長ログの有効化)MQTT Connector の冗長ログの有効化 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ### [](#eclipse-paho-ドライバーの冗長ログの有効化)Eclipse Paho ドライバーの冗長ログの有効化 MQTT Connector の基盤となるドライバーである Eclipse Paho では、Java Util Logging が使用されます。アプリケーションのログファイルでドライバーのログメッセージを確認する必要がある場合は、次の手順に従ってアプリケーションに最新の ​`log4j-jul-2.xx.x.jar`​ バージョンを提供します。 1. `{MULE_HOME}/lib/boot`​ にある ​`log4j-core-2.xx.x.jar`​ のファイル名内のバージョンサフィックスを確認して、​`log4j`​ コアモジュールバージョンを識別します。 埋め込み Mule Runtime Engine (Mule) の場合は、​`{AnypointStudio Folder}/Contents/Eclipse/plugins/org.mule.tooling.server.4.3.0.ee_7.3.5.202005112043/mule/lib/boot`​ に似たフォルダーを見つけます。 2. 公開 Maven リポジトリから同じバージョンの ​`log4j-jul-2.xx.x.jar`​ をダウンロードします。たとえば、Mule 4.3.0 の場合は ​`log4j-jul-2.13.1.jar`​ になります。 3. `log4j-jul-2.xx.x.jar`​ を ​`{MULE_HOME}/lib/boot`​ に配置します。 4. [Apache Logging Services](https://logging.apache.org/log4j/log4j-2.2/log4j-jul/index.html)​ サイトで文書化されているロギングレベルのマッピングに従って、Mule アプリケーションで、対応する ​`java.util.logging`​ カテゴリを追加します。次に例を示します。 ```xml `` ``` `level`​ 属性では、Java Util Logging レベルを指定する必要があります。詳細は、 [Apache Logging Services](https://logging.apache.org/log4j/log4j-2.3/log4j-jul/index.html)​ で Java Util Logging レベルの変換テーブルを参照し、その同等の Log4j レベルを確認してください。 ## [](#mosquitto-broker-の冗長ログの有効化)Mosquitto Broker の冗長ログの有効化 ロギングを設定するためのメカニズムはブローカーごとに異なります。Mosquitto ブローカーとロギングレベルを設定する手順は、次のとおりです。 1. 公式 Docker イメージを使用して、Mosquitto ブローカーをセットアップします。これを行うには、次のコマンドを実行します。 `docker run -it -p 1883:1883 \ -v /your/local/path/mosquitto.log:/mosquitto/mosquitto.log \ -v /your/local/path/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto` このコマンドを使用して、ログファイル ​`mosquitto.log`​ と設定ファイル ​`mosquitto.conf`​ を指定します。 - `mosquitto.log`​ は、ブローカーがログメッセージを書き込むファイルです。 - `mosquitto.conf`​ は、ブローカーの設定ファイルです。 1. `mosquitto.conf`​ 設定ファイルで目的のログレベルを設定します。次に例を示します。 ```text # Unencrypted MQTT over TCP # for listener at port 1883 listener 1883 allow_anonymous true # ================================================================= # Logging # ================================================================= # Route log messages to log file log_dest file /mosquitto/mosquitto.log # Types of messages to log. Use multiple log_type lines for logging # multiple types of messages. log_type debug log_type error log_type warning log_type notice log_type information ``` 前述のファイルの最初の 2 行でポート 1883 のリスナーをセットアップします。認証ログイン情報は必須ではありません。 ロギングセクションで、マウントした ​`mosquitto.log`​ ファイルにログを書き込む必要があることと、ブローカーですべてのレベルのメッセージを記録する必要があることを指定します。 テストで何が必要かに応じて、異なる設定を持つさまざまなリスナーを追加できます。次に例を示します。 ```text per_listener_settings true # Unencrypted MQTT over TCP listener 1883 allow_anonymous true # Unencrypted MQTT over TCP listener 1884 password_file /mosquitto/config/mosquitto.passwd listener 8080 protocol websockets allow_anonymous true ``` 前述のファイルでは、3 個の個別のリスナーを設定しました。 - ポート 1883 では、MQTT 経由の匿名接続を許可するエンドポイントを指定しました。 - ポート 1884 では、パスワードファイルを指定しました。ブローカーはここで認証用のユーザー名とパスワードが見つかることを期待します。 - ポート 8080 では、WebSockets 接続を許可することを指定しました。 個別の設定を使用して個々の各リスナーを設定するには、まず ​`per_listener_settings true`​ を設定する必要があります。 ## [](#一般的なスローの理解)一般的なスローの理解 ここでは、一般的なスローメッセージとその解決方法を示します。 - MQTT3:CONNECTIVITY メッセージのパブリッシュ中にクライアントがブローカーから切断されました。 - MQTT3:INVALID\_TOPIC トピックが無効です。たとえば、名前が短すぎるか、名前が長すぎるか、名前に無効な文字が含まれます。 - MQTT3:PERSISTENCE メッセージのパブリッシュ時に、信頼性の高いメッセージング用の永続的なデータの読み取りまたは書き込み中にエラーが発生しました。 - MQTT3:PUBLISH メッセージのパブリッシュ中にエラーが発生しました。 - MQTT3:RETRY\_EXHAUSTED すべての再接続の試行に失敗しました。 - MQTT3:WRITE\_TIMEOUT サーバーへのメッセージの書き込みを待機している間にクライアントがタイムアウトしてエラーが発生しました。 ## [](#関連情報)関連情報 - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [Known Issues](https://help.salesforce.com/s/issues) # MQTT Connector の例 MQTT 用 Anypoint Connector (MQTT Connector) を最大限活用するには、次のコネクタの設定例を参照してください。 - [サービス品質の設定](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-quality-of-service) サービス品質 (QoS) を設定して、インバウンドまたはアウトバウンドメッセージの配信保証のレベルを指定します。 - [LWT (Last Will and Testament) メッセージの設定](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-lwt-message) すべてのトピックサブスクライバーにブローカーからのクライアントの切断を通知するように LWT (Last Will and Testament) メッセージを設定します。 - [MQTT Connector を使用したクライアント ID の設定](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-client-id) クライアント ID を設定できるクライアント ID ジェネレーターを設定します。 - [新規メッセージのリスン](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-listener) 一意または複数のトピックでメッセージをリスンするように ​**On New Message**​ ソースを設定し、単一レベルまたはマルチレベルのワイルドカードを使用して複数のトピックでメッセージをリスンします。 - [メッセージのパブリッシュ](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-publish) 特定のサービス品質を持つ目的のトピックにメッセージをパブリッシュするように ​**Publish**​ 操作を設定します。 - [メッセージのリスンとパブリッシュ](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-publish-receive) メッセージをリスンして特定のトピックにパブリッシュするように ​**On New Message**​ ソースと ​**Publish**​ 操作を設定します。 - [クラスターへの MQTT Connector アプリケーションのデプロイ](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-cluster) クラスターに Mule アプリケーションをデプロイするときの MQTT Connector のクライアント ID の動作について理解します。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # 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​ (デフォルト)** - **Is retained (保持)**​: **True** ![Studio での MQTT Publish 操作の設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-publish.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​ および ​`topic`​ の設定は次のように記述されます。 ```xml #["Stories of imagination sample quote."] ``` ## [](#メッセージを保持としてマーク)メッセージを保持としてマーク デフォルトでは、ブローカーは、現在のサブスクライバーが存在しないトピックに対して受信したメッセージを破棄します。ブローカーがメッセージを保持するようにするには、​**\[Is retained (保持)\]**​ を ​`True`​ に設定します。ブローカーは、最後に保持されたメッセージと、選択されたトピックに対応するサービス品質を保存します。 保持されたメッセージのトピックに一致するトピックパターンをサブスクライブしている各クライアントは、保持されたメッセージをサブスクライブ後に受信します。ブローカーには、トピックごとに 1 つの保持されたメッセージのみが保存されます。これにより、新しいサブスクライバーは、パブリッシャーからの次の更新を待つのではなく、最新の既存の値を受信できます。 ## [](#関連情報)関連情報 - [MQTT3 Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector を使用したクライアント ID の設定 クライアント ID は MQTT ブローカーへの接続を識別するため MQTT にとって重要です。また、クライアント ID は特定のデバイスまたはクライアントを識別するため、トレーサビリティの観点で、ブローカーへのデバイスの接続を明確に識別するクライアント ID を設定することをお勧めします。 通常、MQTT ブローカーでは、既存の (古い) 接続と同じクライアント ID を使用する新しい接続要求を受信した場合に古い接続を閉じて新しい接続を受け入れるメカニズムが実装されます。MQTT ブローカーはこのメカニズムを使用して、通信の一方の端のクラッシュにより TCP 接続がハーフオープン状態または無効な状態 (望ましくない状態) に達するような状況を回避します。ブローカーは新しい受信接続を有効とみなし、古い接続を閉じて新しく確立された接続を引き続き使用します。 アプリケーションをクラスターにデプロイし、クライアントを識別する明示的なクライアント ID を提供する場合、このクライアントテークオーバーメカニズムが問題になる可能性があります。MQTT 用 Anypoint Connector (MQTT Connector) により提供されるクライアント ID ジェネレーターを使用して、ユーザーは静的クライアント ID を設定したり、動的コンポーネントを使用するクライアント ID を設定してさまざまなデプロイメントシナリオに対応したり、カスタムクライアント ID ジェネレーターを定義したりできます。 ## [](#クライアント-id-カスタム式ジェネレーターの設定)クライアント ID カスタム式ジェネレーターの設定 このジェネレーターを使用すると、静的文字列プレフィックスと式をサフィックスとして設定できます。どちらのパラメーターも省略可能ですが、クライアント ID を生成するには少なくとも 1 つのパラメーターを指定する必要があります。パラメーターを何も指定しない場合、​`INVALID_CLIENT_ID`​ 例外がスローされます。 次の例では、クライアント ID 文字列の末尾に現在の日付を含めるように設定し、​`principality-123-2020-09-03`​ のようなクライアント ID を生成します。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ > ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 6. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Client id custom expression generator (クライアント ID カスタム式ジェネレーター)\]**​ を選択します。 7. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `principality-123-` - **Custom Client ID Suffix (カスタムクライアント ID サフィックス)**​: `#[%dw 2.0 output text/plain --- now() as String {format: 'y-MM-dd'}]"` - **Username (ユーザー名)**​: `mosquitto` - **Password (パスワード)**​: `password` - **URL**​: `tcp://broker.hivemq.com:1883` 8. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでのクライアント ID カスタム式ジェネレーターの設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-custom-generator.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​ および ​`customClientIdSuffix`​ の設定は次のように記述されます。 ```xml
``` 式をクライアント ID として指定することもできます。次の例の動的設定では、式の新しい値ごとに新しい接続を生成します。 ```xml ``` 次の例では、簡単な文字列をクライアント ID として設定し、静的クライアント ID ​`principality-123`​ を生成します。 ```xml ``` ## [](#クライアント-id-ランダムサフィックスジェネレーターの設定)クライアント ID ランダムサフィックスジェネレーターの設定 このジェネレーターを使用すると、省略可能な静的文字列プレフィックスを設定し、ランダムな UUID をサフィックスとして追加できます。静的プレフィックスを指定すると、静的プレフィックスは ​`-`​ 文字によりランダム UUID サフィックスから分離されます。 次の例では、​`smart-bentley-123-0f321a85-fddf-429f-ba89-26d201db9777`​ のようなクライアント ID を生成するようにジェネレーターを設定しますが、新しい各接続には、ランダムに生成された独自の UUID サフィックスが含まれます。 1. Studio で、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ > ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 6. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Client id random suffix generator (クライアント ID ランダムサフィックスジェネレーター)\]**​ を選択します。 7. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `smart-bentley-123` - **Username (ユーザー名)**​: `mosquitto` - **Password (パスワード)**​: `password` - **URL**​: `tcp://127.0.0.1:${mosquitto.port1}` 8. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでのクライアント ID ランダムサフィックスジェネレーターの設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-random-generator.png) **設定 XML**​ エディターでは、​`<`​ 設定は次のように記述されます。 ```xml ``` クライアント ID プレフィックスを省略することもできます。この場合、ジェネレーターではランダムな UUID がクライアント ID として割り当てられます。次の例では、​`0f321a85-fddf-429f-ba89-26d201db9777`​ のようなクライアント ID を生成するようにジェネレーターを設定します。 ```xml ``` ## [](#カスタムクライアント-id-ジェネレーターの設定)カスタムクライアント ID ジェネレーターの設定 独自のカスタムクライアント ID ジェネレーターを使用するには、Mule SDK のサブタイプと、インポートおよびエクスポートのアノテーションに精通している必要があります。 次の例では、独自のクライアント ID ジェネレーターを設定します。 1. 独自の Java Connector プロジェクトを作成します。 2. コネクタプロジェクトの ​`pom.xml`​ ファイルで、MQTT Connector を連動関係として追加します。次に例を示します。 ```xml 4.0.0 org.example mqtt3-extended-connector 1.0.0-SNAPSHOT mule-extension MQTT Extended Connector org.mule.extensions mule-ee-core-modules-parent com.mulesoft.connectors mule4-mqtt3-connector 1.0.0 mule-plugin ``` 1. コネクタの定義クラスを作成します。次に例を示します。 ```java @Xml(prefix = "mqtt3-extended") @Extension(name = "MQTT3Extended", category = SELECT) public class MQTT3ExtendedConnector { } ``` 1. カスタム拡張機能で、MQTT Connector により公開されている ​`ClientIDGenerator`​ インターフェースの実装を定義します。 MQTT Connector では、​`ClientIDGenerator`​ インターフェースが公開されているため、必要なのはメソッド ​`generateClientID()`​ の実装のみです。この時点では、​`@Import`​ アノテーションを使用してこのインターフェースをインポートします。その後、このインターフェースは MQTT Connector によってエクスポートされます。 ```java @Xml(prefix = "mqtt3-extended") @Extension(name = "MQTT3Extended", category = SELECT) @Import(type = ClientIDGenerator.class) public class MQTT3ExtendedConnector { } ``` 1. `ClientIDGenerator`​ インターフェースの実装を定義します。 ```java @Alias("custom-client-id") public class MyClientIdGenerator implements ClientIDGenerator { /** * Client id to be used to identify the connection to the MQTT broker. */ @Parameter @DisplayName("Client ID") @Optional(defaultValue = "") @Expression(NOT_SUPPORTED) @ClientId protected String clientId; private String suffix = "my-custom-suffix"; /** * @return a client ID that results from concatenating the clientId and a randomly generated UUID string. */ @Override public String generateClientID() { return clientId + (clientId.isEmpty() ? "" : "-") + suffix; } } ``` 2. コネクタ定義でサブタイプを定義し、カスタム実装をエクスポートします。 これを行うには、コネクタクラスでカスタム実装を ​`ClientIDGenerator`​ サブタイプとして定義することで、以前に定義した実装を MQTT Connector で使用できるようにします。また、​`@Export`​ アノテーションを使用して、​`MyClientIdGenerator`​ クラスをエクスポートします。 ```java @Xml(prefix = "mqtt3-extended") @Extension(name = "MQTT3Extended", category = SELECT) @Import(type = ClientIDGenerator.class) @Export(classes = {MyClientIdGenerator.class}) @SubTypeMapping(baseType = ClientIDGenerator.class, subTypes = {MyClientIdGenerator.class}) public class MQTT3ExtendedConnector { } ``` カスタムコネクタプロジェクトをセットアップしたら、MQTT Connector を使用してアプリケーションから新しい実装にいつでもアクセスできます。 1. Studio でカスタムコネクタと MQTT Connector の両方をアプリケーションの ​`pom.xml`​ ファイルにインポートします。次に例を示します。 ```xml com.mycompany mqtt-custom-id-generator 1.0.0-SNAPSHOT mule-application mqtt-custom-id-generator UTF-8 UTF-8 4.3.0-20210719 3.5.2 org.apache.maven.plugins maven-clean-plugin 3.0.0 org.mule.tools.maven mule-maven-plugin ${mule.maven.plugin.version} true org.eclipse.paho org.eclipse.paho.client.mqttv3 org.mule.connectors mule-http-connector 1.5.25 mule-plugin org.mule.connectors mule-sockets-connector 1.2.1 mule-plugin org.eclipse.paho org.eclipse.paho.client.mqttv3 1.2.5 org.example mqtt3-extended-connector 1.0.0-SNAPSHOT mule-plugin com.mulesoft.connectors mule4-mqtt3-connector 1.0.0 mule-plugin ``` その後、アプリケーションで新しい MQTT Connector 設定を作成するときには、カスタムクライアント ID の実装が、使用可能なクライアント ID ジェネレーターのリストに含まれるようになります。 1. MQTT Connector 設定でカスタム ID ジェネレーターを使用するには、​**\[Global Elements (グローバル要素)\]**​ タブに移動します。 2. **\[Create (作成)\]**​ をクリックします。 3. 検索条件ボックスに「​`mqtt`​」と入力し、​**\[MQTT3 Config (MQTT3 設定)\]**​ を選択します。 4. **\[OK\]**​ をクリックします。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ > ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 6. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Custom client id (カスタムクライアント ID)\]**​ を選択します。 7. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `123` - **Username (ユーザー名)**​: `mosquitto` - **Password (パスワード)**​: `password` - **URL**​: `tcp://broker.hivemq.com:1883"` 8. **\[OK\]**​ をクリックします。 ![「Global Element Properties (グローバル要素プロパティ)」 ウィンドウでのカスタムクライアント ID ジェネレーターの設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-custom-generator.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​ および ​``​ の設定は次のように記述されます。 ```xml ``` ## [](#関連情報)関連情報 - [MQTT Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector を使用したメッセージのリスンとパブリッシュ 次の例では、メッセージをリスンして特定のトピックにパブリッシュするように MQTT 用 Anypoint Connector (MQTT Connector) の ​**On New Message**​ ソースと ​**Publish**​ 操作を設定します。 ## [](#メッセージのリスンとパブリッシュを行う-mule-アプリケーションの作成)メッセージのリスンとパブリッシュを行う Mule アプリケーションの作成 次の例では、メッセージをリスンして特定のトピックにパブリッシュするように ​**On New Message**​ ソースと ​**Publish**​ 操作を設定します。 ![Studio キャンバスでの MQTT のリスンとパブリッシュの例](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-example-1.png) ### [](#リスナーフローの作成)リスナーフローの作成 例の最初の部分では、検索条件 ​`topic/quotes/#`​ に一致するトピックの受信メッセージに対してイベントをトリガーする ​**On New Message**​ ソースを含むフローを作成し、受信したメッセージを記録する ​**Logger**​ コンポーネントを追加します。 1. Studio > ​**\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[MQTT3\] > \[On New Message\]**​ を選択します。 2. **\[On New Messagee\]**​ ソースを Studio キャンバスにドラッグします。 3. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。 4. **\[MQTT3 Config (MQTT3 設定)\]**​ > ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 5. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Client id custom expression generator (クライアント ID カスタム式ジェネレーター)\]**​ を選択します。 6. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `crowley123` - **Username (ユーザー名)**​: `mosquitto` - **Password (パスワード)**​: `mosquitto` - **URL**​: `tcp://0.0.0.0:1883` 7. **\[LWT\]**​ をクリックします。 8. 次の項目を設定します。 - **Topic (トピック)**​: `topic/lwt` - **Body (本文)**​: `This is the LWT message` - **Is retained (保持)**​: **True** 9. **\[OK\]**​ をクリックします。 10. **\[On New Message\]**​ 設定画面で、​**\[Topics (トピック)\]**​ を ​**\[Edit inline (インライン編集)\]**​ に設定します。 11. プラス記号 (​**+**​) をクリックして、新しいトピックを追加します。 12. **\[Topic filter (トピック検索条件)\]**​ で ​`topic/quotes/#`​ を設定します。 13. **\[OK\]**​ をクリックします。 14. **\[Logger\]**​ コンポーネントを ​**\[On New Message\]**​ ソースの右にドラッグします。 15. **\[Message (メッセージ)\]**​ を ​`Received message '#[payload]' with at topic #[attributes.topic] with qos #[attributes.qos]`​ に設定します。 ### [](#パブリッシャーフローの作成)パブリッシャーフローの作成 例の 2 番目の部分では、メッセージをトピック ​`topic/quotes/shakespeare`​ にパブリッシュし、​`listener-flow`​ でイベントをトリガーする ​**Publish**​ 操作を含むフローを作成します。 1. Studio で HTTP の ​**\[Listener\]**​ ソースを 1 番目の ​`listener-flow`​ の下にドラッグします。 2. **\[Path (パス)\]**​ を ​`publish/message`​ に設定します。 3. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。 4. **\[Host (ホスト)\]**​ を ​`0.0.0.0`​ に、​**\[Port (ポート)\]**​ を ​`8081`​ に設定します。 5. **\[OK\]**​ をクリックします。 6. MQTT3 の ​**\[Publisher\]**​ 操作を HTTP の ​**\[Listener\]**​ ソースの横にドラッグします。 7. **\[Connector configuration (コネクタ設定)\]**​ で、​`listener-flow`​ ファイルで作成された ​`MQTT3_Config_1`​ 設定を選択します。 8. 次の項目を設定します。 - **Topic (トピック)**​: `topic/quotes/shakespeare` - **Message (メッセージ)**​: `"Uneasy lies the head that wears a crown"` 9. **\[Set Payload\]**​ コンポーネントを ​**\[Publish\]**​ 操作の右にドラッグします。 10. **\[Value (値)\]**​ を「​`SUCCESSFULLY PUBLISHED MESSAGE!`​」に設定します。 11. Mule アプリケーションを保存して実行します。 12. メッセージをパブリッシュするには、次の curl コマンドを使用して HTTP エンドポイントに要求を送信します。​`curl -v --request GET localhost:8081/publish/message`​。 ### [](#mqtt-connector-を使用したメッセージのリスンとパブリッシュの-xml)MQTT Connector を使用したメッセージのリスンとパブリッシュの XML この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ## [](#mule-アプリケーションの作成と-lwt-メッセージトピックのサブスクライブ)Mule アプリケーションの作成と LWT メッセージトピックのサブスクライブ 次の例では、前述のリスナーフローを使用し、1 番目のフローと同じ LWT メッセージトピックをサブスクライブする 2 番目のリスナーフローを作成します。Mule アプリケーションがクラッシュし、1 番目のリスナーフローが切断されると、MQTT ブローカーは設定済みのトピックに LWT メッセージを送信し、メッセージを保持します。Mule アプリケーションが再起動すると、2 番目のリスナーフローは、保持された LWT メッセージをリスンして記録します。 ![Studio キャンバスでの MQTT リスナーフローの例](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-example-2.png) ### [](#1-番目のリスナーフローの作成)1 番目のリスナーフローの作成 例の最初の部分では、検索条件 ​`topic/quotes/#`​ に一致するトピックの受信メッセージに対してイベントをトリガーする ​**On New Message**​ ソースを含むフローを作成し、受信したメッセージを記録する ​**Logger**​ コンポーネントを追加します。 1. Studio の ​**\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[MQTT3\] > \[On New Message\]**​ を選択します。 2. **\[On New Messagee\]**​ ソースを Studio キャンバスにドラッグします。 3. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。 4. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 5. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Client id custom expression generator (クライアント ID カスタム式ジェネレーター)\]**​ を選択します。 6. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `crowley123` - **Username (ユーザー名)**​: `mosquitto` - **Password (パスワード)**​: `mosquitto` - **URL**​: `tcp://0.0.0.0:1883` 7. **\[LWT\]**​ タブをクリックします。 8. 次の項目を設定します。 - **Topic (トピック)**​: `topic/lwt` - **Body (本文)**​: `This is the LWT message` - **Is retained (保持)**​: **True** 9. **\[OK\]**​ をクリックします。 10. **\[On New Message\]**​ 設定画面で、​**\[Topics (トピック)\]**​ を ​**\[Edit inline (インライン編集)\]**​ に設定します。 11. プラス記号 (​**+**​) をクリックして、新しいトピックを追加します。 12. **\[Topic filter (トピック検索条件)\]**​ で ​`topic/quotes/#`​ を設定します。 13. **\[OK\]**​ をクリックします。 14. **\[Logger\]**​ コンポーネントを ​**\[On New Message\]**​ ソースの右にドラッグします。 15. **\[Message (メッセージ)\]**​ を ​`Received message '#[payload]' with at topic #[attributes.topic] with qos #[attributes.qos]`​ に設定します。 ### [](#2-番目のリスナーフローの作成)2 番目のリスナーフローの作成 例の 2 番目の部分では、トピック ​`topic/lwt`​ をサブスクライブする別の ​**On New Message**​ ソースを追加することで 2 番目のリスナーフローを作成し、受信したメッセージを記録する ​**Logger**​ コンポーネントを追加します。 1. Studio で、別の ​**\[On New Message\]**​ ソースを 1 番目の ​`listener-flow`​ の下にドラッグします。 2. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。 3. **\[MQTT3 Config (MQTT3 設定)\]**​ ウィンドウの ​**\[Connection (接続)\]**​ で ​**\[MQTT3 URL Connection (MQTT3 URL 接続)\]**​ を選択します。 4. **\[Client id generator (クライアント ID ジェネレーター)\]**​ で ​**\[Client id random suffix generator (クライアント ID ランダムサフィックスジェネレーター)\]**​ を選択します。 5. 次の項目を設定します。 - **Client ID (クライアント ID)**​: `azfell123` - **Username (ユーザー名)**​: `mosquitto` - **Password (パスワード)**​: `mosquitto` - **URL**​: `tcp://0.0.0.0:1884` 6. **\[OK\]**​ をクリックします。 7. **\[On New Message\]**​ 設定画面で、​**\[Topics (トピック)\]**​ を ​**\[Edit inline (インライン編集)\]**​ に設定します。 8. プラス記号 (​**+**​) をクリックして、新しいトピックを追加します。 9. **\[Topic filter (トピック検索条件)\]**​ で ​`topic/lwt`​ を設定します。 10. **\[OK\]**​ をクリックします。 11. **\[Logger\]**​ コンポーネントを ​**\[On New Message\]**​ ソースの右にドラッグします。 12. **\[Message (メッセージ)\]**​ を ​`Received message '#[payload]' with at topic #[attributes.topic] with qos #[attributes.qos]`​ に設定します。 13. 保存して Mule アプリケーションを実行します。 14. Mule アプリケーションのプロセス ID を探し、​`kill -9 `​ のようなコマンドを使用してターミナルでアプリケーションを強制終了することで、アプリケーションのクラッシュをシミュレーションします。 Mule アプリケーションがクラッシュするため、1 番目のリスナーフローは切断されます。 15. Mule アプリケーションを再起動します。 MQTT ブローカーは LWT メッセージを保持し、2 番目のリスナーフローは、1 番目のリスナーフローで設定された LWT メッセージを記録します。 ### [](#lwt-メッセージトピックをサブスクライブするメッセージをリスンするための-xml)LWT メッセージトピックをサブスクライブするメッセージをリスンするための XML この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ## [](#関連情報)関連情報 - [MQTT Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # MQTT Connector を使用した新規メッセージのリスン 次の例では、1 つ以上のトピック検索条件を使用して新しい受信メッセージをリスンできる MQTT 用 Anypoint Connector (MQTT Connector) の ​**On New Message**​ ソースを設定します。各トピック検索条件には特定のサービス品質 (QoS) が設定されています。 次の例では、​**On New Message**​ ソースを設定します。 1. Studio > ​**\[Mule Palette (Mule パレット)\]**​ で、​**\[MQTT3\] > \[On New Message\]**​ を選択します。 2. **\[On New Message\]**​ を Studio キャンバスにドラッグします。 3. **\[On New Message\]**​ 設定画面で、必要に応じて ​**\[Display Name (表示名)\]**​ 項目の値を変更します。 4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内のすべてのソースのインスタンスで使用できるグローバル要素を設定します。 5. **\[MQTT3 Config (MQTT3 設定)\]**​ > ​**\[Connection (接続)\]**​ で、この設定に指定する接続種別のいずれかを選択します。 - **MQTT3 URL Connection (MQTT3 URL 接続)** - **MQTT3 Fail-Over Connection (MQTT3 フェールオーバー接続)** - **MQTT3 Form Connection (MQTT3 フォーム接続)** 1. ブローカーへの MQTT 接続を識別する一意の直観的な ​**\[Client ID (クライアント ID)\]**​ を指定します。 2. **\[General (一般)\]**​ タブで接続情報 (ブローカーで必要なライブラリや接続の詳細オプションなど) も指定します。 3. **\[LWT\]**​ タブで、必要に応じて LWT (Last Will and Testament) メッセージを指定します。 4. **\[TLS/SSL\]**​ タブで、必要に応じて TLS 設定を指定します。 5. **\[Advanced (詳細)\]**​ タブで、必要に応じて再接続戦略を指定します。 6. **\[OK\]**​ をクリックして、ウィンドウを閉じます。 7. **\[On New Message\]**​ 設定画面の ​**\[Topics (トピック)\]**​ で ​**\[Edit inline (インライン編集)\]**​ を選択し、リスナーでサブスクライブするトピックをリストします。 8. プラス記号 (​**+**​) をクリックして、トピックを設定します。 9. **\[Topic (トピック)\]**​ 設定画面で、トピックの単一レベルまたはマルチレベルのサブスクリプションを表す ​**\[Topic filter (トピック検索条件)\]**​ を設定します。 10. **\[QoS\]**​ を次のいずれかのサービス品質レベルに設定します。 - **AT\_MOST\_ONCE** - **AT\_LEAST\_ONCE** - **EXACTLY\_ONCE** 11. **\[Finish (完了)\]**​ をクリックします。 ![「Topic (トピック)」 検索条件が設定されている Studio での MQTT の 「On New Message」 ソースの設定](/mulesoft/current/ja-jp/mqtt3-connector/1.0/_images/mqtt3-onnewmessage.png) **\[Configuration XML (設定 XML)\]**​ エディターで、​``​、​``​、および ​`topicFilter`​ の設定は次のように記述されます。 ```xml ``` ## [](#トピック検索条件での単一レベルのワイルドカードの設定)トピック検索条件での単一レベルのワイルドカードの設定 複数のトピックをリスンするには、単一レベルのワイルドカードを設定します。単一レベルのワイルドカード (​`+`​) を使用すると、サブスクライバーは、特定の構造に一致するすべてのトピックにパブリッシュされたメッセージを受信できます。 次の例では、構造 ​`quotes/+/authors`​ を含む ​`topicFilter`​ パラメーターを設定します。 ```xml ``` 次のトピックにパブリッシュされたメッセージではリスナーがトリガーされます。 - `quotes/british/authors` - `quotes/american/authors` ただし、次のトピックにパブリッシュされたメッセージではリスナーはトリガーされません。 - `names/british/authors` - `quotes/american/writers` ## [](#トピック検索条件でのマルチレベルのワイルドカードの設定)トピック検索条件でのマルチレベルのワイルドカードの設定 同じルート (ハッシュ ​`#`​ 記号の前にあるすべて) を共有するすべてのトピックをリスナーでサブスクライブできるようにするには、マルチレベルのワイルドカードを設定します。 次の例では、構造 ​`quotes/england/#`​ を含む ​`topicFilter`​ パラメーターを設定します。 ```xml ``` 次のトピックにパブリッシュされたメッセージではリスナーがトリガーされます。 - `quotes/england/authors/terryPratchett` - `quotes/england/authors/neilGaiman` - `quotes/england/actors` ただし、次のトピックにパブリッシュされたメッセージではリスナーはトリガーされません。 - `quotes/american/actors` - `phrases/england/authors/neilGaiman` ## [](#設定を共有するリスナー)設定を共有するリスナー 設定要素を共有するリスナーは、接続とクライアント ID も共有します。特に一方のリスナーが停止し、もう一方のリスナーが停止していない場合は、この点を覚えておくことが重要です。 次の例では、フロー ​`listenerReaderA`​ と ​`listenerReaderB`​ のリスナーが同じ接続 ​`MQTT_Config`​ 設定とクライアント ID を共有します。ブローカーの観点では、どちらのリスナーも識別不可能です。 ```xml ``` この例でわかるように、リスナーはトピック ​`terryPratchett`​ のサブスクリプションも共有します。トピックを最初にサブスクライブしたリスナーがサブスクリプションのサービス品質 (QoS) を設定できます。該当のトピックに対して、1 つのサービス品質レベルを持つ 1 つのサブスクリプションのみが存在できます。 `listenerReaderB`​ フローが停止しても、​`listenerReaderA`​ フローが ​`terryPratchett`​ トピックのメッセージを引き続き受信して処理します。設定要素で ​`cleanSession=false`​ が指定されていても、​`listenerReaderB`​ がオフラインの間に処理されたメッセージは ​`listenerReaderB`​ に再送信されません。 ## [](#関連情報)関連情報 - [MQTT Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # クラスターへの MQTT Connector アプリケーションのデプロイ MQTT ブローカーでは、クライアント ID を使用してクライアントとの接続を確立します。たとえば、クライアント ID が ​`smart-bentley-123`​ であるクライアントとの接続をブローカーで確立した後、同じクライアント ID を使用する新しい接続を受信すると、ブローカーは以前の接続を閉じて (古くなったとみなして)、新しい接続を受け入れます。このメカニズムはクライアントテークオーバーと呼ばれます。MQTT ブローカーはこのメカニズムを使用して、通信の一方の端のクラッシュにより TCP 接続がハーフオープン状態または無効な状態 (望ましくない状態) に達するような状況を回避します。 クライアントテークオーバーのため、クラスターにデプロイされている MQTT Connector を使用する Mule Runtime Engine (Mule) アプリケーションには、クラスター内のアクティブな各ノードの一意のクライアント ID を含める必要があります。このようなシナリオでクライアントテークオーバーを回避するには、アプリケーションで提供されているクライアント ID ジェネレーターを使用するか、独自のクライアントジェネレーターを提供することで、これらの一意の ID を提供することができます。 ## [](#関連情報)関連情報 - [MQTT Connector を使用したクライアント ID の設定](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-client-id) - [MQTT Connector の例](https://docs.mulesoft.com/jp/mqtt3-connector/1.0/mqtt3-connector-examples) - [MuleSoft ヘルプセンター](https://help.mulesoft.com)