Amazon SQS Connector 5.11 の例 - Mule 4

Amazon SQS Connector の Mule フローの例を示します。

メッセージの送受信

この例は、メタデータと共にメッセージを Amazon SQS キューに送信し、キューから受信します。この例には次の 2 つのフローが含まれます。

  • 最初のフローは、メタデータと共にメッセージを送信し、キューのメッセージ数を取得して、メッセージが送信されたことを確認する。

  • 2 番目のフローは、メッセージを受信し、メッセージ本文を記録する。

メッセージの送受信フロー

最初のフローを設定する

メッセージをキューに送信する最初のフローを設定します。最初のフローの作成には、​Listener​ コンポーネント、​Transform Message​ コンポーネント、​Send Message​ 操作、​Logger​ コンポーネント、​Get approximate number of messages​ 操作、および 2 番目の ​Logger​ コンポーネントの設定が含まれます。

HTTP リスナーを設定する

/​ パスへのコールが行われたときに Mule フローを開始するように ​Listener​ コンポーネントを設定します。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューから、​[HTTP]​ を選択して ​[Listener]​ コンポーネントをキャンバスにドラッグします。

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

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

  5. プロパティウィンドウで、​[Path (パス)]​ 項目値を ​/​ に設定します。

[Transform Message] コンポーネントを追加する

Transform Message​ コンポーネントを追加してメタデータを添付し、値を HTTP 入力フォームから Java 形式に変換して、​Send message​ 操作への入力として使用できるようにします。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Transform Message]​ コンポーネントを ​[Listener]​ の右側にドラッグします。

  2. プロパティウィンドウで、​[Output (出力)]​ セクションの括弧を次の DataWeave コードで上書きします。

    %dw 2.0
    output application/java
    ---
    {
    	delaySeconds: 0,
    	body: "Hello World",
    	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"
    }

Send Message 操作を追加する

Send message​ 操作を追加して、指定されたキューにメッセージを送信します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Amazon SQS]​ を選択して ​[Send message]​ 操作を ​[Transform Message]​ の右側にドラッグします。

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

  3. 次のようにグローバル要素を設定します。

    項目

    Name (名前)

    設定の参照に使用される名前。

    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 Message」 グローバル要素設定ウィンドウ
  4. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    Message (メッセージ)

    payload

    Queue url (キュー URL)

    Amazon SQS キュー URL。

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

    次の図は、プロパティウィンドウでの ​[Send Message]​ 設定の例を示しています。

    「Send Message」 プロパティウィンドウ設定

最初の [Logger] コンポーネントを追加する

Mule コンソールに応答を表示する最初の ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントを ​[Send Message]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    ロガーの名前 (​Log Response​ など)。

    Message (メッセージ)

    Sent Message: `​#[payload]​`

    Level (レベル)

    INFO (Default) (INFO (デフォルト))

    次の図は、プロパティウィンドウでの ​[Logger]​ 設定の例を示しています。

    「Logger」 プロパティウィンドウ設定

Get Approximate Number of Messages 操作を追加する

キューのメッセージ数を取得する ​Get approximate number of messages​ 操作を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Amazon SQS]​ を選択して ​[Get approximate number of messages]​ 操作を ​[Logger]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    Queue url (キュー URL)

    ${sqs.queueUrl}

    次の図は、プロパティウィンドウでの ​[Get approximate number of messages]​ 設定の例を示しています。

    「Get approximate number of messages」 プロパティウィンドウ設定

2 つ目の [Logger] コンポーネントを追加する

Mule コンソールにメッセージ数を表示する 2 番目の ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントを ​[Get approximate number of messages]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    ロガーの名前 (​Log Count​ など)。

    Message (メッセージ)

    Sent Message: `​#[payload]​`

    Level (レベル)

    INFO (Default) (INFO (デフォルト))

    次の図は、プロパティウィンドウでの ​[Logger]​ 設定の例を示しています。

    「Logger」 プロパティウィンドウ設定

2 番目のフローを設定する

メッセージがキューから削除される前に、メッセージを受信してログに記録する 2 番目のフローを設定します。2 番目のフローの作成には、​Receive messages​ ソースと ​Logger​ コンポーネントの設定が含まれます。

Receive Messages ソースを追加する

メッセージを取得する ​Receive messages​ ソースを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Amazon SQS]​ を選択して ​[Receive messages]​ ソースをキャンバスにドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    Number of messages (メッセージ数)

    1

    Queue url (キュー URL)

    Amazon SQS キュー URL。

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

    次の図は、プロパティウィンドウでの ​[Receive messages]​ 設定の例を示しています。

    「Receive messages」 プロパティウィンドウ設定

Logger コンポーネントを追加する

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

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントを ​[Receive messages]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    ロガーの名前 (​Log Receipt​ など)。

    Message (メッセージ)

    `​#[payload]​`

    Level (レベル)

    INFO (Default) (INFO (デフォルト))

    次の図は、プロパティウィンドウでの ​[Logger]​ 設定の例を示しています。

    「Logger」 プロパティウィンドウ設定

この例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<mule xmlns:sqs="http://www.mulesoft.org/schema/mule/sqs" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http
  http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
  http://www.mulesoft.org/schema/mule/ee/core
  http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
  http://www.mulesoft.org/schema/mule/sqs
	http://www.mulesoft.org/schema/mule/sqs/current/mule-sqs.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration"
	defaultQueueUrl="${sqs.queueUrl}" >
		<sqs:basic-connection accessKey="${sqs.accessKey}" secretKey="$sqs.secretKey}" region="us-east-1"/>
	</sqs:config>
	<flow name="sqs-send-messageFlow" >
		<http:listener doc:name="Listener"
		config-ref="HTTP_Listener_config"
		path="/"/>
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
	delaySeconds: 0,
	body: "Hello World",
	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"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<sqs:send-message doc:name="Send message"/>
		<logger level="INFO"
		doc:name="Log Response"
		message="payload"/>
		<sqs:get-approximate-number-of-messages
		doc:name="Get approximate number of messages"
		config-ref="Amazon_SQS_Configuration"
		queueUrl="${sqs.queueUrl}"/>
		<logger level="INFO" doc:name="Log Count"
		message="Sent Message: `#[payload]`"/>
	</flow>
	<flow name="sqs-receive-message-flow" >
		<sqs:receivemessages doc:name="Receive messages"
		config-ref="Amazon_SQS_Configuration"/>
		<logger level="INFO" doc:name="Log Receipt" />
	</flow>
</mule>

大きなメッセージの送受信

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

この例では、AWS S3 バケットを参照して大きなメッセージペイロードを格納するために使用する Amazon SQS キューに、メタデータと共に大きなメッセージを送信し、キューから大きなメッセージを受信します。この例には次の 2 つのフローが含まれます。

  • 最初のフローは、メタデータと共に大きなメッセージを送信し、キューのメッセージ数を取得して、大きなメッセージが送信されたことを確認する。

  • 2 番目のフローは、大きなメッセージを受信し、メッセージ本文を記録する。

大きなメッセージの送受信フロー

始める前に

開始する前に、以下が必要です。

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

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

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

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

最初のフローを設定する

まず、大きなメッセージをキューに送信するフローを作成します。最初のフローの作成には、​Listener​ コンポーネント、​Read​ 操作、​Transform Message​ コンポーネント、​Send Message​ 操作、​Logger​ コンポーネント、​Get approximate number of messages​ 操作、および 2 番目の ​Logger​ コンポーネントの設定が含まれます。

HTTP リスナーを設定する

/largePayload​ パスへのコールが行われたときに Mule フローを開始するように ​Listener​ コンポーネントを設定します。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューから、​[HTTP]​ を選択して ​[Listener]​ コンポーネントをキャンバスにドラッグします。

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

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

  5. プロパティウィンドウで、​[Path (パス)]​ 項目値を ​/largePayload​ に設定します。

Read 操作を追加する

大容量のペイロードを読み取る ​Read​ 操作を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[File (ファイル)]​ を選択して ​[Read]​ 操作を ​[Listener]​ の右側にドラッグします。

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

  3. [Connection (接続)]​ チェックボックスをオンにします。

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

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

    Read 操作の [Working Directory (作業ディレクトリ)] 設定ウィンドウ
  5. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    File Path (ファイルパス)

    読み取るファイルへのパス。

    次の図は、プロパティウィンドウでの ​[Read]​ 設定の例を示しています。

    「Read」 プロパティウィンドウ設定

[Transform Message] コンポーネントを追加する

Transform Message​ コンポーネントを追加してメタデータを添付し、値を HTTP 入力フォームから Java 形式に変換して、​Send message​ 操作への入力として使用できるようにします。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Transform Message]​ コンポーネントを ​[Read]​ の右側にドラッグします。

  2. プロパティウィンドウで、​[Output (出力)]​ セクションの括弧を次の DataWeave コードで上書きします。

    %dw 2.0
    output application/java
    ---
    {
    	delaySeconds: 0,
    	body: "Hello World",
    	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"
    }

Send Message 操作を追加する

Send message​ 操作を追加して、指定されたキューに大きなメッセージを送信します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Amazon SQS]​ を選択して ​[Send message]​ 操作を ​[Transform Message]​ の右側にドラッグします。

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

  3. 次のようにグローバル要素を設定します。

    項目

    Name (名前)

    設定の参照に使用される名前。

    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 Message」 グローバル要素設定ウィンドウ
  4. [Connection (接続)]​ セクションで、​[Advanced (詳細)]​ タブをクリックします。

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

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

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

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

      項目

      Bucket (バケット)

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

      Message Size Threshold (メッセージサイズしきい値)

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

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

      メッセージサイズしきい値のデータ単位。

      Custom S3 Endpoint (カスタム S3 エンドポイント)

      VPC サポート用の Amazon S3 エンドポイント URL。

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

      「Large Payload Support (大容量のペイロードサポート)」 項目設定ウィンドウ
  6. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    Message (メッセージ)

    payload

    Queue url (キュー URL)

    Amazon SQS キュー URL。

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

    次の図は、プロパティウィンドウでの ​[Send Message]​ 設定の例を示しています。

    「Send Message」 プロパティウィンドウ設定

最初の [Logger] コンポーネントを追加する

Mule コンソールに応答を表示する最初の ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントを ​[Send Message]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    ロガーの名前 (​Log Response​ など)。

    Message (メッセージ)

    Sent Message: `​#[payload]​`

    Level (レベル)

    INFO (Default) (INFO (デフォルト))

    次の図は、プロパティウィンドウでの ​[Logger]​ 設定の例を示しています。

    「Logger」 プロパティウィンドウ設定

Get Approximate Number of Messages 操作を追加する

キューのメッセージ数を取得する ​Get approximate number of messages​ 操作を追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Amazon SQS]​ を選択して ​[Get approximate number of messages]​ 操作を ​[Logger]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    Queue url (キュー URL)

    ${sqs.queueUrl}

    次の図は、プロパティウィンドウでの ​[Get approximate number of messages]​ 設定の例を示しています。

    「Get approximate number of messages」 プロパティウィンドウ設定

2 つ目の [Logger] コンポーネントを追加する

Mule コンソールにメッセージ数を表示する 2 番目の ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントを ​[Get approximate number of messages]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    ロガーの名前 (​Log Count​ など)。

    Message (メッセージ)

    Sent Message: `​#[payload]​`

    Level (レベル)

    INFO (Default) (INFO (デフォルト))

    次の図は、プロパティウィンドウでの ​[Logger]​ 設定の例を示しています。

    「Logger」 プロパティウィンドウ設定

2 番目のフローを設定する

大きなメッセージがキューから削除される前に、大きなメッセージを受信してログに記録する 2 番目のフローを設定します。2 番目のフローの作成には、​Receive messages​ ソースと ​Logger​ コンポーネントの設定が含まれます。

Receive Messages ソースを追加する

大きなメッセージを取得する ​Receive messages​ ソースを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Amazon SQS]​ を選択して ​[Receive messages]​ ソースをキャンバスにドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    コネクタ操作の名前。

    Connector configuration (コネクタ設定)

    作成したばかりのグローバル設定。

    Number of messages (メッセージ数)

    1

    Queue url (キュー URL)

    Amazon SQS キュー URL。

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

    次の図は、プロパティウィンドウでの ​[Receive messages]​ 設定の例を示しています。

    「Receive messages」 プロパティウィンドウ設定

Logger コンポーネントを追加する

Mule コンソールに大きなメッセージを表示する ​Logger​ コンポーネントを追加します。

  1. [Mule Palette (Mule パレット)]​ ビューから、​[Core (コア)]​ を選択して ​[Logger]​ コンポーネントを ​[Receive messages]​ の右側にドラッグします。

  2. プロパティウィンドウで、次の項目を設定します。

    項目

    Display Name (表示名)

    ロガーの名前 (​Log Receipt​ など)。

    Message (メッセージ)

    `​#[payload]​`

    Level (レベル)

    INFO (Default) (INFO (デフォルト))

    次の図は、プロパティウィンドウでの ​[Logger]​ 設定の例を示しています。

    「Logger」 プロパティウィンドウ設定

この例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<mule xmlns:sqs="http://www.mulesoft.org/schema/mule/sqs" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:file="http://www.mulesoft.org/schema/mule/file"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
  http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
  http://www.mulesoft.org/schema/mule/ee/core
  http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
  http://www.mulesoft.org/schema/mule/file
  http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
  http://www.mulesoft.org/schema/mule/sqs
	http://www.mulesoft.org/schema/mule/sqs/current/mule-sqs.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>

	<sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration"
	defaultQueueUrl="${sqs.queueUrl}" >
		<sqs:basic-connection accessKey="${sqs.accessKey}" secretKey="$sqs.secretKey}" region="us-east-1" />
	</sqs:config>

	<sqs:config name="Amazon_SQS_Large_Payload_Configuration" doc:name="Amazon SQS Configuration"
	defaultQueueUrl="${sqs.queueUrl}" >
		<sqs:basic-connection accessKey="${sqs.accessKey}" secretKey="$sqs.secretKey}" region="us-east-1" >
			<sqs:large-payload-support bucket="large-sqs-payload-bucket" messageSizeThreshold="256" messageSizeThresholdUnit="KB" />
		</sqs:basic-connection>
	</sqs:config>

	<file:config name="File_Config" doc:name="File Config" >
		<file:connection workingDir="${app.home}" />
	</file:config>

	<flow name="sqs-send-LargeMessageFlow" >
		<http:listener doc:name="Listener"
		config-ref="HTTP_Listener_config"
		path="/largePayload"/>
		<file:read doc:name="Read" config-ref="File_Config" path="largePayload.txt"/>
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
	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"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<sqs:send-message doc:name="Send message" configref="Amazon_SQS_Large_Payload_Configuration" config-ref="Amazon_SQS_Large_Payload_Configuration"/>
		<logger level="INFO"
		doc:name="Log Response"
		message="payload"/>
		<sqs:get-approximate-number-of-messages
		doc:name="Get approximate number of messages"
		config-ref="Amazon_SQS_Large_Payload_Configuration"
		queueUrl="${sqs.queueUrl}"/>
		<logger level="INFO" doc:name="Log Count"
		message="Sent Message: `#[payload]`"/>
	</flow>
	<flow name="sqs-receive-large-message-flow" >
		<sqs:receivemessages doc:name="Receive messages"
		config-ref="Amazon_SQS_Large_Payload_Configuration"/>
		<logger level="INFO" doc:name="Log Receipt" />
	</flow>
</mule>