大きなメッセージを送受信する次の例は、2 つのフローを示しています。
-
最初のフローは、大容量のメッセージペイロードを保存するために使用する 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] コンポーネント: キューに表示されるおおよそのメッセージ数を表示
-
-
大容量のメッセージペイロードの保存に使用する 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 プロジェクトを作成します。
-
Studio で、[File (ファイル)] > [New (新規)] > [Mule Project (Mule プロジェクト)] を選択します。
-
Mule プロジェクトの名前を入力して、[Finish (完了)] をクリックします。
Listener を追加および設定する
-
[Mule Palette (Mule パレット)] で「HTTP」を検索し、[Listener] 操作を選択します。

-
[Listener] 操作をキャンバスにドラッグします。
-
[Listener] 設定で、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
-
デフォルトを受け入れます。
-
[Path (パス)] 項目を
/largePayload に設定します。
File Read コンポーネントを追加および設定する
大容量のペイロードを読み取るため、[File (ファイル)] > [Read (読み取り)] コンポーネントを追加および設定します。
-
[Mule Palette (Mule パレット)] ビューで「File (ファイル)」を検索し、[File Read] 操作を選択します。
-
[File Read] コンポーネントをキャンバスの [Listener] コンポーネントの右にドラッグします。
-
[File Read] 設定で、[File Configuration(ファイル設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
-
[File Config (ファイル設定)] ウィンドウで、[Connection (接続)] チェックボックスをオンにします。
-
[Working Directory (作業ディレクトリ)] で、このコネクタで使用されるすべての相対パスのルートディレクトリとして機能するディレクトリを入力します。
デフォルトは、ユーザーのホームディレクトリです。この例では、ファイルは Mule アプリケーションの
src/main/resources から読み込まれます。
-
[General (一般)] プロパティウィンドウで、次の項目を設定します。
-
Display Name (表示名)
UI に表示するコネクタ操作の名前 -
Connector Configuration (コネクタ設定)
File Read 操作で以前に作成したグローバル設定 -
File Path (ファイルパス)
読み取るファイルへのパス次の画像は、項目のサンプル値を示しています。
-
Transform Message コンポーネントを追加および設定する
メタデータを添付する Transform Message コンポーネントを追加します。
-
[Mule Palette (Mule パレット)] ビューで、「Transform Message」を検索します。
-
[Transform Message] コンポーネントをキャンバスの [Read] コンポーネントの右にドラッグします。
-
[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" }次のスクリーンショットは、Studio の [Output (出力)] セクションに表示される XML を示しています。
SQS Send Message 操作を追加および設定する
-
[Mule Palette (Mule パレット)] ビューで「Amazon SQS」を検索し、[Send message] 操作を選択します。
-
[Send message] 操作をキャンバスの [Transform Message] コンポーネントの右にドラッグします。
-
[Send message] 設定で、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
-
Send message のグローバル要素を設定します。
-
Name (名前)
設定の参照に使用される名前。この例では、Amazon_SQS_Large_Payload_Configuration を使用します。 -
Session Token (セッショントークン)
一時的なセキュリティログイン情報を検証するために使用するセッショントークン。 -
Access Key (アクセスキー)
アカウントを所有するユーザーを一意に識別する英数字のテキスト文字列。 -
Secret Key (シークレットキー)
パスワードの役割を果たすキー。 -
Region Endpoint (リージョンエンドポイント)
キューリージョン。 -
Default Global Queue URL (デフォルトのグローバルキュー URL)
デフォルトの Amazon SQS キュー URL ログイン情報。次の画像は、Send message グローバル要素のサンプル値を示しています。
-
-
[Connection (接続)] セクションで、[Advanced (詳細)] タブをクリックします。
-
[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 です。最大メッセージサイズは 2 GB です。 -
Message Size Threshold Unit (メッセージサイズしきい値単位)
メッセージサイズしきい値のデータ単位。次の画像は、[Large payload support (大容量のペイロードサポート)] 項目のサンプル値を示しています。
-
-
Studio キャンバスの下部にある [Configuration XML (設定 XML)] をクリックして、対応する XML を表示します。
<sqs:config name="Amazon_SQS_Large_Configuration" doc:name="Amazon SQS Large Configuration" defaultQueueUrl="${sqs.queueUrl}"> <sqs:basic-connection accessKey="${sqs.accessKey}" secretKey="${sqs.secretKey}" region="us-east-1" sessionToken="${sqs.sessionToken}"> <sqs:large-payload-support bucket="large-sqs-payload-bucket" messageSizeThreshold="256" messageSizeThresholdUnit="KB" /> </sqs:basic-connection> </sqs:config> -
プロパティウィンドウで次の各項目を設定します。
-
Display Name (表示名)
UI に表示するコネクタ操作の名前 -
Connector Configuration (コネクタ設定)
Amazon_SQS_Large_Payload_Configuration という名前の Send message 操作で以前に作成したグローバル設定 -
メッセージ
payload -
Queue URL (キュー URL)
Amazon SQS キュー URL。指定した場合、この項目の値は [Global Configuration Elements (グローバル設定要素)] ウィンドウの [Default Global Queue URL (デフォルトのグローバルキュー URL)] 項目の値よりも優先されます。次の画像は、[General (一般)] プロパティ設定を示しています。
-
Logger コンポーネントを追加および設定する
Logger コンポーネントを追加して、Mule コンソールにメッセージ応答を表示するように設定します。
-
[Mule Palette (Mule パレット)] ビューで、「Logger」を検索します。
-
[Logger] コンポーネントをキャンバスの [Send Message] コンポーネントの右にドラッグします。
-
次の項目を設定します。
-
Display Name (表示名)
Logger コンポーネントの名前 -
Message (メッセージ)
Mule ログメッセージを指定する文字列または DataWeave 式 -
Level (レベル)
ログレベルを設定します。デフォルト値は INFO です。次の画像は、項目のサンプル値を示しています。
-
キュー内のメッセージ数を取得する
フロー内の 2 番目の [Logger] コンポーネントを設定して、キュー内のおおよそのメッセージ数を取得します。
-
[Mule Palette (Mule パレット)] ビューで、「Amazon SQS」を検索します。
-
[Get approximate number of messages] 操作を選択し、キャンバスの [Logger] コンポーネントの右にドラッグします。
-
Amazon の [Queue url (キュー URL)] 項目を次のように設定します。
-
次の項目を設定します。
-
Display Name (表示名)
Logger コンポーネントの名前 -
Message (メッセージ)
Mule ログメッセージを指定する文字列または DataWeave 式 -
Level (レベル)
ログレベルを設定します。デフォルト値は INFO です。次の画像は、項目のサンプル値を示しています。
-
メッセージを受信するフローを作成する
最後に、メッセージを受信して記録し、キューから削除する別のフローを作成します。
-
[Mule Palette (Mule パレット)] ビューで「SQS」を検索し、[Receive messages] 操作を選択します。
-
[Receive messages] 操作をキャンバスにドラッグします。
-
[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)] 項目の値よりも優先されます。
-
-
Mule コンソールにメッセージを表示する Logger コンポーネントを追加します。
-
次の項目値を使用して Logger を設定します。
-
Display Name (表示名)
Logger コンポーネントの名前 -
Message (メッセージ)
Mule ログメッセージを指定する文字列または DataWeave 式 -
Level (レベル)
ログレベルを設定します。デフォルト値は INFO です。
-
Mule アプリケーション XML コードの例
このユースケース例のフローを Mule アプリケーションに読み込むには、次のコードを 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>