大きなメッセージの送受信例 - Mule 4

大きなメッセージを送受信する次の例は、2 つのフローを示しています。

大きなメッセージを送受信するための Mule フローが Studio に表示されている
  1. 最初のフローは、大容量のメッセージペイロードを保存するために使用する AWS S3 バケットを参照する、大きなメッセージを Amazon キューに送信します。 フローを作成するには、新規 Mule プロジェクトを作成し、次のコンポーネントおよび操作を設定する必要があります。

    • [HTTP] > [Listener]​ コンポーネント: フローを開始

    • [File] > [Read]​ コンポーネント: ファイルを読み取る

    • [Transform Message]​ コンポーネント: 入力データを新しい出力構造または形式に変換

    • [Amazon SQS] > [Send Message]​ 操作: 指定されたキューにメッセージを送信

    • [Logger]​ コンポーネント: Mule コンソールに応答を表示。

    • [Amazon SQS] > [Get approximate number of message]​ 操作: 表示されるキューのおおよそのメッセージ数を取得

    • 2 番目の ​[Logger]​ コンポーネント: キューに表示されるおおよそのメッセージ数を表示

  2. 大容量のメッセージペイロードの保存に使用する AWS S3 バケットを参照する Amazon キューに大きなメッセージを送信するフローを完了したら、メッセージを受信してメッセージ本文をログに記録するフローを作成します。

この機能を有効にすると、AWS S3 の使用に関連する追加料金が発生します。

この例では一部の項目値に変数を使用しています。コードで変数をそれらの値に置き換えるか、​src/main/resources/mule-artifact.properties​ ファイルで各変数の値を指定できます。

始める前に

以下が必要です。

  • Amazon SQS の対象リソースおよび Anypoint Platform へのアクセス権

  • 256 KB より大きいペイロードを含むファイル

  • 大容量のメッセージペイロードを保存するために使用する、AWS S3 で作成された AWS S3 バケット

  • AWS Identity and Access Management (IAM) のログイン情報

大きなメッセージの送信

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

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

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

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

Listener を追加および設定する

  1. [Mule Palette (Mule パレット)]​ で​「HTTP」​を検索し、​[Listener]​ 操作を選択します。

    「Mule Palette (Mule パレット)」 ビューで 「HTTP」 の 「Listener」 が選択されている

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

  3. [Listener]​ 設定で、​[Connector configuration (コネクタ設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  4. デフォルトを受け入れます。

  5. [Path (パス)]​ 項目を ​/largePayload​ に設定します。

    HTTP Listener の一般設定項目

File Read コンポーネントを追加および設定する

大容量のペイロードを読み取るため、​[File (ファイル)] > [Read (読み取り)]​ コンポーネントを追加および設定します。

  1. [Mule Palette (Mule パレット)]​ ビューで​「File (ファイル)」​を検索し、​[File Read]​ 操作を選択します。

    select-file-read
  2. [File Read]​ コンポーネントをキャンバスの ​[Listener]​ コンポーネントの右にドラッグします。

  3. [File Read]​ 設定で、​[File Configuration(ファイル設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  4. [File Config (ファイル設定)]​ ウィンドウで、​[Connection (接続)]​ チェックボックスをオンにします。

  5. [Working Directory (作業ディレクトリ)]​ で、このコネクタで使用されるすべての相対パスのルートディレクトリとして機能するディレクトリを入力します。
    デフォルトは、ユーザーのホームディレクトリです。

    この例では、ファイルは Mule アプリケーションの ​src/main/resources​ から読み込まれます。

    File Read 操作のグローバル要素を設定する [File Config (ファイル設定)] ウィンドウ
  6. [General (一般)]​ プロパティウィンドウで、次の項目を設定します。

    • Display Name (表示名)
      UI に表示するコネクタ操作の名前

    • Connector Configuration (コネクタ設定)
      File Read​ 操作で以前に作成したグローバル設定

    • File Path (ファイルパス)
      読み取るファイルへのパス

      次の画像は、項目のサンプル値を示しています。

      File Read 操作の一般的なプロパティ設定例の値

Transform Message コンポーネントを追加および設定する

メタデータを添付する ​Transform Message​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​「Transform Message」​を検索します。

    「Mule Palette (Mule パレット)」 ビューで 「Transform Message (Core)」 コンポーネントが選択されている
  2. [Transform Message]​ コンポーネントをキャンバスの ​[Read]​ コンポーネントの右にドラッグします。

  3. [Transform Message]​ 設定で、​[Output (出力)]​ セクションの括弧を次の XML で上書きします。

    {
    	delaySeconds: 0,
    	body: payload,
    	messageAttributes: {
    		"AccountId": {
    			"stringValue" : "000123456",
    			"dataType" : "String.AccountId"
    		} as Object {
    			class: "org.mule.extension.sqs.api.model.MessageAttributeValue"
    		},
    		"NumberId": {
    			"stringValue" : "230.000000000000000001",
    			"dataType" : "Number"
    		} as Object {
    			class : "org.mule.extension.sqs.api.model.MessageAttributeValue"
    		}
    	} as Object {
    		class: "java.util.HashMap"
    	}
    } as Object {
    	class: "org.mule.extension.sqs.api.model.Message"
    }
    dataweave

    次のスクリーンショットは、Studio の ​[Output (出力)]​ セクションに表示される XML を示しています。

    Transform Message コンポーネント出力

SQS Send Message 操作を追加および設定する

  1. [Mule Palette (Mule パレット)]​ ビューで​「Amazon SQS」​を検索し、​[Send message]​ 操作を選択します。

    「Mule Palette (Mule パレット)」 ビューで 「Send Message」 操作が選択されている
  2. [Send message]​ 操作をキャンバスの ​[Transform Message]​ コンポーネントの右にドラッグします。

  3. [Send message]​ 設定で、​[Connector configuration (コネクタ設定)]​ 項目の横にある ​[+]​ をクリックしてグローバル要素を追加します。

  4. Send message​ のグローバル要素を設定します。

    • Name (名前)
      設定の参照に使用される名前。この例では、​Amazon_SQS_Large_Payload_Configuration​ を使用します。

    • Session Token (セッショントークン)
      一時的なセキュリティログイン情報を検証するために使用するセッショントークン。

    • Access Key (アクセスキー)
      アカウントを所有するユーザーを一意に識別する英数字のテキスト文字列。

    • Secret Key (シークレットキー)
      パスワードの役割を果たすキー。

    • Region Endpoint (リージョンエンドポイント)
      キューリージョン。

    • SQS Endpoint (SQS エンドポイント)
      Amazon VPC サポート用の SQS エンドポイント。

    • Default Global Queue URL (デフォルトのグローバルキュー URL)
      デフォルトの Amazon SQS キュー URL ログイン情報。

      次の画像は、​Send message​ グローバル要素のサンプル値を示しています。

      Send 操作のサンプル値を含む [Amazon SQS Configuration (mazon SQS 設定)] ウィンドウ
  5. [Connection (接続)]​ セクションで、​[Advanced (詳細)]​ タブをクリックします。

  6. [Large Payload Support (大容量のペイロードサポート)]​ 項目で、次のいずれかを選択します。

    • Expression or Bean Reference (式または bean 参照)

    • Edit inline (インライン編集)

      1. 項目を次のように設定します。

    • Bucket (バケット)
      大容量のメッセージペイロードを保存するために使用する AWS S3 バケットの名前。バケットは、AWS S3 ですでに作成および設定されている必要があります。この機能を有効にすると、AWS S3 の使用で追加料金が発生します。

    • Message Size Threshold (メッセージサイズしきい値)
      AWS S3 バケットにメッセージペイロードを保存するためのメッセージサイズしきい値。メッセージサイズしきい値のデフォルト値は 256 KB で、最大しきい値サイズの値は 256 KB です。最大メッセージサイズは 2 GB です。

    • Message Size Threshold Unit (メッセージサイズしきい値単位)
      メッセージサイズしきい値のデータ単位。

    • S3 Endpoint (S3 エンドポイント)
      VPC サポート用の Amazon S3 エンドポイント URL。

      次の画像は、​[Large payload support (大容量のペイロードサポート)]​ 項目のサンプル値を示しています。

      大容量のペイロードサポートの設定
  7. Studio キャンバスの下部にある ​[Configuration XML (設定 XML)]​ をクリックして、対応する XML を表示します。

    <sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration" doc:id="a851a77e-7837-463a-a969-4436c29aed70" defaultQueueUrl="${sqs.queueUrl}">
    	<sqs:basic-connection accessKey="${sqs.sessionToken}" secretKey="${sqs.queueARN}" sqsEndpoint="${sqs.endpoint}">
    		<sqs:large-payload-support bucket="large-payload-bucket" s3Endpoint="${sqs.s3Endpoint}" />
    	</sqs:basic-connection>
    </sqs:config>
    xml
  8. プロパティウィンドウで次の各項目を設定します。

    • Display Name (表示名)
      UI に表示するコネクタ操作の名前

    • Connector Configuration (コネクタ設定)
      Amazon_SQS_Large_Payload_Configuration​ という名前の ​Send message​ 操作で以前に作成したグローバル設定

    • Message (メッセージ)
      payload

    • Queue URL (キュー URL)
      Amazon SQS キュー URL。指定した場合、この項目の値は ​[Global Configuration Elements (グローバル設定要素)]​ ウィンドウの ​[Default Global Queue URL (デフォルトのグローバルキュー URL)]​ 項目の値よりも優先されます。

      次の画像は、​[General (一般)]​ プロパティ設定を示しています。

      send-message

Logger コンポーネントを追加および設定する

Logger​ コンポーネントを追加して、Mule コンソールにメッセージ応答を表示するように設定します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​「Logger」​を検索します。

  2. [Logger]​ コンポーネントをキャンバスの ​[Send Message]​ コンポーネントの右にドラッグします。

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

    • Display Name (表示名)
      Logger コンポーネントの名前

    • Message (メッセージ)
      Mule ログメッセージを指定する文字列または DataWeave 式

    • Level (レベル)
      ログレベルを設定します。デフォルト値は ​INFO​ です。

      次の画像は、項目のサンプル値を示しています。

      Logger

キュー内のメッセージ数を取得する

フロー内の 2 番目の ​[Logger]​ コンポーネントを設定して、キュー内のおおよそのメッセージ数を取得します。

  1. [Mule Palette (Mule パレット)]​ ビューで、​「Amazon SQS」​を検索します。

  2. [Get approximate number of messages]​ 操作を選択し、キャンバスの ​[Logger]​ コンポーネントの右にドラッグします。

  3. Amazon の ​[Queue url (キュー URL)]​ 項目を次のように設定します。

    get-message-count
  4. 次の項目を設定します。

    • Display Name (表示名)
      Logger コンポーネントの名前

    • Message (メッセージ)
      Mule ログメッセージを指定する文字列または DataWeave 式

    • Level (レベル)
      ログレベルを設定します。デフォルト値は ​INFO​ です。

      次の画像は、項目のサンプル値を示しています。

      ログメッセージ数の設定値の例

メッセージを受信するフローを作成する

最後に、メッセージを受信して記録し、キューから削除する別のフローを作成します。

  1. [Mule Palette (Mule パレット)] ビューで​「SQS」​を検索し、​[Receive messages]​ 操作を選択します。

    select-receive-messages
  2. [Receive messages]​ 操作をキャンバスにドラッグします。

  3. [General (一般)]​ プロパティウィンドウで、次の項目を設定します。

    • Display Name (表示名)
      コネクタ操作で表示する名前

    • Connector Configuration (コネクタ設定)
      以前に作成したグローバル設定。この例では、​Amazon_SQS_Large_Payload_Configuration​ を使用します。

    • Number of Messages (メッセージ数)
      受診するメッセージ数。この例では、​10​ です。

    • Queue url (キュー URL)
      Amazon SQS キュー URL。指定した場合、この項目の値は ​[Global Configuration Elements (グローバル設定要素)]​ ウィンドウの ​[Default Global Queue URL (デフォルトのグローバルキュー URL)]​ 項目の値よりも優先されます。

      receive-message
  4. Mule コンソールにメッセージを表示する ​Logger​ コンポーネントを追加します。

  5. 次の項目値を使用して ​Logger​ を設定します。

    • Display Name (表示名)
      Logger コンポーネントの名前

    • Message (メッセージ)
      Mule ログメッセージを指定する文字列または DataWeave 式

    • Level (レベル)
      ログレベルを設定します。デフォルト値は ​INFO​ です。

Mule アプリケーション XML コードの例

このユースケース例のフローを Mule アプリケーションに読み込むには、次のコードを XML エディターに貼り付けます。必要に応じて、環境に合わせて値を変更します。