Asteria WarpフローデザイナーとAWSのSimple Queue Service(SQS)の連携:AWS_SQSGetコンポーネントを使用してSQSからメッセージを取得する

はじめに

AWS_SQSGetコンポーネントを使用することで、Simple Queue Service(SQS)からメッセージを取得できます。
※今回もAWSコネクションを使用しますが、DynamoDBと連携する回で作成したAWSコネクションがそのまま使用できます。
※また、接続するSQSのキューはFIFOではありません。

AWS_SQSGetコンポーネントと今回の確認に使用するフローについて

SQSからメッセージを取得するコンポーネントと、確認に使用するフローを解説します。

AWS_SQSGetコンポーネントの設定

このコンポーネントのプロパティとして設定した内容は以下の通りで、すべて「基本」タブの設定です。「メッセージ属性」タブなどの載っていない項目はデフォルトのままです。

  • コネクションを使用:はい
  • コネクション名:(使用するAWSコネクションを入力します。下図ではDynamoDBと連携する回で作成したものを使用しています。)
  • キューURL:(メッセージを出力したいキューのキューURLを入力します。ブラウザでSQSの各キューを開いた際に表示される詳細欄の項目「URL」から確認するか、コネクション選択後にAWS_SQSPutコンポーネントをダブルクリックして「Amazon SQS Queue Browser」で選択してください。)
  • 未読のメッセージのみ:いいえ(「はい」にするとReceive Countが1のメッセージしか出力されません。
  • コミット時の処理:何もしない(「メッセージを削除」にすると、コミット時に出力したメッセージが削除されます。
  • デコードする:いいえ(「はい」にすると、取得したメッセージをBase64デコードします。AWS_SQSPutでメッセージ本文をBase64エンコードしている際はこの設定でデコードできます。
確認に使用するフローについて

AWSのSQSからメッセージを取得できることを確認するために、下図のフローを作成しました。
AWS_SQSGetコンポーネントで指定したキューからメッセージを取得します。

AWS_SQSGetコンポーネントの動作確認用フロー

フローの解説

AWS_SQSGet

プロパティで設定した内容をもとに、指定したSQSのキューからメッセージを取得します。

マッパー

取得した内容からMessageIDやタイムスタンプを省いて、メッセージのみに絞ります。

実行結果

フローの最後がEndResponseなので、終了後にメッセージのみに絞ったストリームを返します。
下図ではAWS_SQSPutの回でSQSに出力した「AWS_SQS_TestMessage」を取得できたことが確認できます。
※この段階では、SQSに「AWS_SQS_TestMessage」以外のメッセージは存在していません。

フローの実行結果