Anypoint Studio を使用した Sockets Connector 1.2 の設定 - Mule 4

Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。

Studio でコネクタを追加および設定する手順は、次のとおりです。

Studio で初めてコネクタを設定する場合は、​「Anypoint Studio を使用したコネクタの設定」​を参照してください。このトピックを参照した後、コネクタ項目についての詳細情報が必要な場合は、​「Sockets Connector リファレンス」​を参照してください。

Mule プロジェクトを作成する

Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。

  1. Studio で、​[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)]​ を選択します。

  2. Mule プロジェクトの名前を入力して、​[Finish (完了)]​ をクリックします。

コネクタを Mule プロジェクトに追加する

ソケット用 Anypoint Connector (Sockets Connector) を Mule プロジェクトに追加して、XML コードにコネクタの名前空間およびスキーマの場所を自動的に入力し、プロジェクトの ​pom.xml​ ファイルに必須の連動関係を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  2. [Add Dependencies to Project (連動関係をプロジェクトに追加)]​ ビューで、検索項目に「​sockets​」と入力します。

  3. [Available modules (使用可能なモジュール)]​ で、​[Sockets (ソケット)]​ をクリックします。

  4. [Add (追加)]​ をクリックします。

  5. [Finish (完了)]​ をクリックします。

Studio でコネクタを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのコネクタを使用できません。

ソケットリスナーソースを設定する

ソースは、指定された条件が満たされたときにフローを開始します。ソケットリスナーソースは、クライアントが接続できるソケットエンドポイントを表します。このエンドポイントを参照して、外部クライアントは TCP または UDP ソケット接続を確立し、メッセージを送信するたびにフローをトリガーします。

  1. [Mule Palette (Mule パレット)]​ ビューで、​[Sockets (ソケット)]​ > ​[Listener (リスナー)]​ を選択します。

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

  3. [Listener (リスナー)]​ 設定画面で、必要に応じて ​[Display Name (表示名)]​ 項目の値を変更します。

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

  5. [General (一般)]​ タブの ​[Connection (接続)]​ で、​Tcp listener​ 接続または ​Udp listener​ 接続を選択します。

  6. 選択した接続に応じたタブを設定します。

    タブ名 説明

    General (一般)

    必須の ​[Host (ホスト)]​ 属性および ​[Port (ポート)]​ 属性を設定し、その他の省略可能な項目を設定します。

    Buffer Configuration (バッファ設定)

    必要に応じて、送受信のバッファサイズ情報を指定します。

    TLS

    必要に応じて、TLS 情報を指定します。

    Timeout Configuration (タイムアウト設定)

    必要に応じて、クライアントとサーバーのタイムアウト情報を指定します。

    Advanced (詳細)

    必要に応じて、再接続戦略を含む再接続情報を指定します。

  1. [Test Connection (接続をテスト)]​ をクリックして、Mule が特定のサーバーに接続できることを確認します。

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

Studio でのフローのソケットリスナーソースは次のようになります。

ソケットリスナーソース
Figure 1. ソケットリスナーソース

Studio でのポート ​8082​ でローカル着信接続を受け入れるための TCP 接続を使用したソケットリスナーソースの設定は次のようになります。

ソケットリスナーソース設定
Figure 2. ソケットリスナーソース設定

[Configuration XML (設定 XML)]​ タブでは、XML は次のように記述されます。

	<sockets:listener-config name="Sockets_Listener_config">
		<sockets:tcp-listener-connection host="localhost" port="8082" />
	</sockets:listener-config>

	<flow name="SocketsFlow" >
		<sockets:listene config-ref="Sockets_Listener_config"/>
	</flow>
xml

Send 操作と Send and Receive 操作を設定する

フローにコネクタの操作を追加すると、そのコネクタで実行する特定の操作をすぐに定義できます。Sockets Connector は、2 つの基本操作を提供します。

  • Send
    RequesterConnection に関連付けられているクライアントを使用してデータを送信します。

  • Send and receive
    関連付けられているクライアントを使用してデータを送信した後、応答を受信するまで、またはタイムアウトになるまで (この場合、null ペイロードが返される) ブロックします。

Send 操作または Send and Receive 操作を設定する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ ビューで、次のいずれかを選択します。

    • [Sockets (ソケット)]​ > ​[Send]​。

    • [Sockets (ソケット)]​ > ​[Send and receive]​。

  2. [Send]​ 操作または ​[Send and receive]​ 操作を Studio キャンバスにドラッグします。

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

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

  5. [General (一般)]​ タブの ​[Connection (接続)]​ で、​Tcp requester​ 接続または ​Udp requester​ 接続を選択します。

  6. 選択した接続に応じたタブを設定します。

    タブ名 説明

    General (一般)

    必須の ​[Host (ホスト)]​ 属性および ​[Port (ポート)]​ 属性を設定し、必要に応じて省略可能な項目を設定します。

    Buffer Configuration (バッファ設定)

    必要に応じて、送受信のバッファサイズ情報を指定します。

    Connection (接続)

    必要に応じて、サポートされる TCP プロトコルのいずれかを選択して設定します。

    Local Address Settings (ローカルアドレス設定)

    必要に応じて、ローカルアドレスを指定します。

    TLS

    必要に応じて、TLS 情報を指定します。

    Timeout Configuration (タイムアウト設定)

    必要に応じて、クライアントとサーバーのタイムアウト情報を指定します。

    Advanced (詳細)

    必要に応じて、再接続戦略を含む再接続情報を指定します。

  1. [Test Connection (接続をテスト)]​ をクリックして、Mule が特定のサーバーに接続できることを確認します。

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

さらに、​Send and receive​ 操作の場合は、次のように MIME タイプを設定します。

  1. フローで ​[Send and receive]​ 操作をクリックします。

  2. [MIME Type (MIME タイプ)]​ タブで、項目メニューから MIME タイプを選択します。

Studio での Sockets Send 操作および Send and receive 操作は次のようになります。

Sockets Send 操作と Send and Receive 操作
Figure 3. Sockets Send 操作と Send and Receive 操作

Studio でのポート ​8082​ でローカル着信接続を受け入れるための TCP 接続を使用した Send 操作または Send and receive 操作の設定は次のようになります。

Sockets Send 操作または Send and Receive 操作の設定
Figure 4. Sockets Send 操作または Send and Receive 操作の設定

[Configuration XML (設定 XML)]​ タブでは、Send 操作設定の XML は次のように記述されます。

<sockets:request-config name="Sockets_Send_config">
		<sockets:tcp-requester-connection host="localhost" port="8082" />
	</sockets:request-config>

	<flow name="SocketsFlow" >
		<sockets:send config-ref="Sockets_Send_config"/>
	</flow>
xml

Studio での Send and receive 操作の ​application/json​ としての MIME タイプの設定は次のようになります。

ソケットの MIME タイプ設定
Figure 5. ソケットの MIME タイプ設定

[Configuration XML (設定 XML)]​ タブでは、Send and receive 操作設定の XML は次のように記述されます。

<sockets:request-config name="Sockets_Send_config">
	<sockets:tcp-requester-connection host="localhost" port="8082" />
</sockets:request-config>

<flow name="SocketsFlow" >
	<sockets:send-and-receive config-ref="Sockets_Send_Receive_config" outputMimeType="application/json"/>
</flow>
xml

サポートされる TCP プロトコルの設定

Sockets Connector では、TCP 上で実装されるアプリケーションレベルプロトコルをサポートしています。これらのプロトコルを適切に機能させるには、クライアント側とサーバー側の両方に実装する必要があります。
デフォルトでは、Sockets Connector では安全なプロトコルを実装しますが、Anypoint Studio と XML の両方でコネクタ操作用に異なるプロトコルを設定できます。

次のような TCP プロトコルがサポートされています。

  • Direct Protocol (ダイレクトプロトコル)
    ソケットは、現時点で利用できるバイトがなくなるまで読み込みます。遅いネットワークでは、​EOFProtocol​ や ​LengthProtocol​ の方が信頼性が高くなる場合があります。

  • EOF Protocol (EOF プロトコル)
    読み込みは、クライアントがストリームを閉じることで終了します。

  • Length Protocol (長さのプロトコル)
    このプロトコルは、整数 (パケット長) と転送するデータを送信する、または読み取ることによって定義されます。

  • Custom Class Loading Length Protocol (カスタムクラス読み込み長のプロトコル)
    特定のクラスローダーを使用してストリームからオブジェクトを読み込む長さのプロトコル。

  • Safe Protocol (安全なプロトコル)
    すべてのメッセージの前に Cookie を付けるテストプロトコルであり、本番環境では使用できません。

  • Streaming Protocol (ストリーミングプロトコル)
    ソケットの Send 操作が元の ​InputStream​ をペイロードとしたメッセージを返せるようにします。

  • XML Message Protocol (XML メッセージプロトコル)
    このプロトコルは、ストリーミング XML ドキュメントを読み取るために使用します。唯一の要件は、各ドキュメントの冒頭に ​<?xml…​.​ の形式で XML 宣言を含めることです。
    データは、新しいドキュメントが見つかるか、または利用可能なデータがなくなるまで読み取られます。遅いネットワークでは、​XmlMessageEofProtocol​ の方が信頼性が高くなる場合があります。
    また、XML 宣言を探すときには、プラットフォームのデフォルトの文字エンコードを使用してメッセージバイトをデコードするため、メッセージの文字エンコードについても注意が必要です。

  • XML Message EOF Protocol (XML メッセージ EOF プロトコル)
    XmlMessageProtocol​ を拡張して、新しいメッセージまたは EOF が見つかるまで読み取りを続行します。

  • Custom Protocol (カスタムプロトコル)
    TcpProtocol​ を拡張するクラスを作成して、自分のカスタムプロトコルを定義します。

ソケットリスナーの TCP プロトコルを設定する

ソケットリスナーのサポートされる TCP プロトコルを設定する手順は、次のとおりです。

  1. ソケットリスナーの ​[Global Element Properties (グローバル要素のプロパティ)]​ 設定を開きます。

  2. [General (一般)]​ タブの ​[Connection (接続)]​ で、​Tcp listener​ を選択します。

  3. [General (一般)]​ タブの ​[General (一般)]​ セクションで、​[Protocol (プロトコル)]​ にサポートされるプロトコルのいずれかを選択します。

  4. コネクタの必須項目を設定します。

  5. [Test Connection (接続をテスト)]​ をクリックして、Mule が特定のサーバーに接続できることを確認します。

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

Studio でのダイレクトプロトコルを使用するためのソケットリスナーの設定は次のようになります。

ソケットのダイレクトプロトコル設定
Figure 6. ソケットのダイレクトプロトコル設定

[Configuration XML (設定 XML)]​ タブでは、XML は次のようになります。

	<sockets:listener-config name="Sockets_Listener_config" >
		<sockets:tcp-listener-connection host="localhost" port="8082" >
			<sockets:protocol>
				<sockets:direct-protocol />
			</sockets:protocol>
		</sockets:tcp-listener-connection>
	</sockets:listener-config>
xml

Send and Receive 操作の TCP プロトコルを設定する

Send 操作または Send and receive 操作のサポートされる TCP プロトコルを設定する手順は、次のとおりです。

  1. ソケット操作の ​[Global Element Properties (グローバル要素のプロパティ)]​ 設定を開きます。

  2. [General (一般)]​ タブの ​[Connection (接続)]​ で、​Tcp requester​ を選択します。

  3. [Connection (接続)]​ タブで、​[Protocol (プロトコル)]​ にサポートされるプロトコルのいずれかを選択します。

  4. コネクタの必須項目を設定します。

  5. [Test Connection (接続をテスト)]​ をクリックして、Mule が特定のサーバーに接続できることを確認します。

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

Studio でのダイレクトプロトコルを使用するための Send 操作の設定は次のようになります。

ソケットのダイレクトプロトコル設定
Figure 7. ソケットのダイレクトプロトコル設定

[Configuration XML (設定 XML)]​ タブでは、XML は次のように記述されます。

<sockets:request-config name="Sockets_Send_config" >
	<sockets:tcp-requester-connection >
		<sockets:protocol >
			<sockets:direct-protocol />
		</sockets:protocol>
	</sockets:tcp-requester-connection>
</sockets:request-config>
xml

アプリケーションログの表示

問題があるかどうかを確認するために、アプリケーションログを表示できます。

  • アプリケーションを Anypoint Platform から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。

  • コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。

アプリケーションのログファイル (​log4j2.xml​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​MULE_HOME/logs/<app-name>.log​ でアプリケーションログを表示することもできます。