コネクタの一般的なユースケースを次に挙げます。
-
SNS メッセージを Amazon SQS キューに送信する
-
Amazon SNS メッセージを HTTP/HTTPS エンドポイントに送信する
Amazon SNS メッセージの Amazon SQS キューへの送信
Amazon SNS は、Amazon Simple Queue Service (Amazon SQS) と緊密に連携します。Amazon SNS と Amazon SQS を併用すれば、次のメッセージをアプリケーションに配信できます。
-
イベントの迅速な通知が必要なメッセージ。
-
他のアプリケーションが後で処理するために Amazon SQS キューで保持されるメッセージ。
Amazon SQS キューを Amazon SNS トピックにサブスクライブするときに、メッセージをトピックにパブリッシュできます。Amazon SNS は、サブスクライブされたキューに Amazon SQS メッセージを送信します。
AWS マネジメントコンソールを使用して、Amazon SQS キューを Amazon SNS トピックにサブスクライブするプロセスを簡略化します。
Amazon SNS メッセージの HTTP/HTTPS エンドポイントへの送信
Amazon SNS を使用して、通知メッセージを 1 つ以上の HTTP または HTTPS エンドポイントに送信できます。Amazon SNS トピックにエンドポイントをサブスクライブすると、トピックへの通知をパブリッシュできます。これにより、Amazon SNS はサブスクライブしたエンドポイントに通知のコンテンツを配信する HTTP POST 要求を送信します。
例: コネクタを使用して SNS メッセージを Amazon SQS キューに送信
次の図は、このユースケースのフロー例を示しています。
この例を試す前に、Anypoint Studio にアクセスし、[Mule Palette (Mule パレット)] に Amazon SNS と Amazon SQS のエントリが表示されていることを確認します。 表示されていない場合、「Exchange を使用した Studio でのコネクタのインストール」の指示に従って両方のコネクタをインストールします。
コネクタを使用して Amazon SNS メッセージを Amazon SQS キューに送信する Mule アプリケーションを設定する手順は、次のとおりです。
-
Anypoint Studio で新しい Mule プロジェクトを作成します。
-
[Mule Palette (Mule パレット)] で「HTTP」を検索し、Listener 操作を選択します。
-
Listener 操作をキャンバスにドラッグします。
-
Listener 設定で、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
-
デフォルトを受け入れます。
-
Listener 設定の [General (一般)] タブで、[Display Name (表示名)] 項目を
HTTP、[Path (パス)] 項目を `/'' に設定します。
-
[Mule Palette (Mule パレット)] で「SNS」を検索し、Publish 操作を選択します。
-
Publish 操作を HTTP Listener コンポーネントの右にドラッグします。
-
Publish 設定で、[Connector configuration (コネクタ設定)] 項目の横にある [+] をクリックしてグローバル要素を追加します。
-
次のようにグローバル要素を設定します。
パラメーター 説明 Value (値) Name (名前)
設定の参照に使用される名前。
Amazon_SNS_Configuration または別の名前Access Key (アクセスキー)
アカウントを所有するユーザーを一意に識別する英数字のテキスト文字列。
AWS アクセスキー
Secret Key (シークレットキー)
パスワードの役割を果たすキー。
AWS シークレットキー
Region Endpoint (リージョンエンドポイント)
キューリージョン。
キューリージョン
次の画像は、Publish 操作のサンプルグローバル要素を示しています。
-
[Configuration XML (設定 XML)] タブを選択して、対応する XML を表示します。
<sns:config name="Amazon_SNS_Configuration" doc:name="Amazon SNS configuration" > <sns:basic-connection accessKey="EXAMPLEACCESSKEY" secretKey="EXAMPLESECRETKEY" /> </sns:config> -
[Global Elements (グローバル要素)] タブをクリックします。
-
[Amazon SNS Configuration (Configuration) (Amazon SNS 設定 (設定))] を選択して、[Edit (編集)] をクリックします。
-
[Test Connection (接続をテスト)] をクリックして、Mule が SNS インスタンスに接続できることを確認します。
-
正常に接続できた場合は、[OK] をクリックして設定を保存します。
-
そうでない場合は、見直して、誤ったパラメーターを修正してからもう一度テストします。
-
-
フローに戻って Publish を選択します。
-
残りのパラメーターを設定します。
パラメーター 値 Basic Settings (基本設定)
Display Name (表示名)
Publish または別の名前。Connector configuration (コネクタ設定)
Amazon_SNS_configuration (作成したグローバル要素への参照名)[General (一般)] セクション
Topic arn (トピック ARN)
Amazon リソース名 (ARN)。
Message (メッセージ)
`Hello World!`Subject (件名)
Testing publish to queueMessage structure (メッセージ構造)
JSON次の画像は、Publish Message 操作のサンプル設定を示しています。
-
[Configuration XML (設定 XML)] タブを選択して、対応する XML を表示します。
<sns:publish doc:name="Publish" topicArn="arn:aws:sns:us-east-1:123456789012:TopicName" messageStructure="JSON" subject="Testing publish to queue" config-ref="Amazon_SNS_configuration"> <sns:message><![CDATA[#['{ "default": "Hello World!" }']]]></sns:message> </sns:publish>default JSON キーは、SQS にとって特別な意味を持ちます。使用されるプロトコルに関係なく、キーの値はすべてのサブスクライバーにメッセージとして送信されます。Publish Message 操作でこのキーを指定する必要があります。必要に応じて、HTTP や SQS などの特定のトランスポートプロトコルに送信するメッセージを定義する他の最上位キーを指定できます。詳細は、Amazon Simple Notification Service ドキュメントの 「Publish」を参照してください。
Publish 操作によって処理されたデータの表示
同じ例を使用して、Mule コンソールで Publish 操作によって処理されたデータを表示する Logger コンポーネントを追加します。
-
[Mule Palette (Mule パレット)] で、「Logger」コンポーネントを検索し、Amazon SNS Connector (Publish) の右にドラッグします。
-
Logger コンポーネントを次のように設定します。
パラメーター 値 Display Name (表示名)
Logger または別の名前Message (メッセージ)
Message: #[payload]Level (レベル)
INFO
SNS メッセージの受信
同じ例を使用して、Amazon SQS が Amazon SNS によってパブリッシュされたメッセージを受信できるようにする 2 番目のフローを追加します。
-
[Mule Palette (Mule パレット)] で、「Flow」を検索し、Flow コンポーネントをキャンバスにドラッグします。
-
[Mule Palette (Mule パレット)] で、「SQS」を検索し、Receive messages 操作を選択して Flow コンポーネントの左にドラッグします。
-
新しいコンポーネントを選択します。
-
[Connector configuration (コネクタ設定)] 項目の横のある [+] をクリックし、新しい Amazon SQS Connector グローバル要素を追加します。
-
次のようにグローバル要素を設定します。
パラメーター 説明 Value (値) Name (名前)
設定への参照に使用される名前。
Amazon_SQS_Configuration または別の名前Access Key (アクセスキー)
アカウントを所有するユーザーを一意に識別する英数字のテキスト文字列
AWS アクセスキー
Secret Key (シークレットキー)
パスワードの役割を果たすキー。
AWS シークレットキー
Region Endpoint (リージョンエンドポイント)
キューリージョン。
キューリージョン
Test Queue ARN (キュー ARN をテスト)
接続をテストするために次のステップで使用されるキュー ARN。
テストキュー ARN の形式は
arn:aws:sqs:region:account-id:queue-name です。次の画像は、Receive messages 操作のサンプルグローバル要素を示しています。
-
[Configuration XML (設定 XML)] タブを選択して、対応する XML を表示します。
<sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration" > <sqs:basic-connection region="us_east_1" accessKey="EXAMPLEACCESSKEY" secretKey="EXAMPLESECRETKEY" testQueueArn="arn:aws:sqs:us-east-1:123456789012:QueueName"/> </sqs:config> -
[Test Connection (接続をテスト)] をクリックして、Mule が SQS インスタンスに接続できることを確認します。
-
正常に接続できた場合は、[OK] をクリックして保存します。
-
接続に失敗した場合は、誤ったパラメーターを確認して修正し、もう一度テストを実行してください。
-
-
Amazon SQS Connector のプロパティエディターで、残りのパラメーターを設定します。
パラメーター 値 Basic Settings (基本設定)
Display Name (表示名)
Amazon SQS (Streaming) または別の名前Connector configuration (コネクタ設定)*
Amazon_SQS_Configuration (作成したグローバル要素への参照名)Queue url (キュー URL)
キュー URL の形式は
https://sqs.region.amazonaws.com/account-id/queue-name です。[General (一般)] グループの他の項目
デフォルト値
設定内の SQS キューが SNS トピックにサブスクライブされていることを確認します。
次に例を示します。
-
[Configuration XML (設定 XML)] タブを選択して、対応する XML を表示します。
<sqs:receivemessages doc:name="Amazon SQS (Streaming)" queueUrl="https://sqs.us-east-1.amazonaws.com/123456789012/queue-url" config-ref="Amazon_SQS_Configuration"/> -
Amazon SQS Connector の後に Logger スコープを追加して、Mule コンソールの Receive 操作で渡されるデータを出力します。Logger を次のように設定します。
パラメーター 値 Display Name (表示名)
Display Message または別の名前Message (メッセージ)
Received Message: #[payload]Level (レベル)
INFO -
プロジェクトを保存します。
プロジェクトを Mule アプリケーションとして実行する手順は、次のとおりです。
-
Package Explorer でプロジェクトを右クリックし、[Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] を選択します。
-
Web ブラウザーを開き、URL
http://localhost:8081/ を入力して応答を確認します。ロガーには、ブラウザーのパブリッシュされたメッセージ ID と、Mule コンソールの受信メッセージが表示されます。
デモ Mule アプリケーションの XML コード
このユースケース例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを XML エディターに貼り付けます。必要に応じて、環境に合わせて値を変更します。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:sqs="http://www.mulesoft.org/schema/mule/sqs"
xmlns:sns="http://www.mulesoft.org/schema/mule/sns"
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/sns http://www.mulesoft.org/schema/mule/sns/current/mule-sns.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>
<sns:config name="Amazon_SNS_configuration" doc:name="Amazon SNS configuration">
<sns:basic-connection accessKey="EXAMPLEACCESSKEY" secretKey="EXAMPLESECRETKEY" />
</sns:config>
<sqs:config name="Amazon_SQS_Configuration" doc:name="Amazon SQS Configuration">
<sqs:basic-connection accessKey="EXAMPLEACCESSKEY" secretKey="EXAMPLESECRETKEY"
testQueueArn="arn:aws:sqs:us-east-1:123456789012:QueueName"/>
</sqs:config>
<flow name="sns-connector-exampleFlow">
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
<sns:publish doc:name="Publish" config-ref="Amazon_SNS_configuration"
topicArn="arn:aws:sns:us-east-1:123456789012:TopicName"
subject="Testing publish to queue"
messageStructure="JSON">
<sns:message><![CDATA[#['{
"default": "Hello World!"
}']]]></sns:message>
</sns:publish>
<logger level="INFO" doc:name="Logger" message="Message: #[payload]"/>
</flow>
<flow name="sns-connector-exampleFlow1">
<sqs:receivemessages doc:name="Amazon SQS (Streaming)" config-ref="Amazon_SQS_Configuration"
queueUrl="https://sqs.us-east-1.amazonaws.com/123456789012/queue-url"/>
<logger level="INFO" doc:name="Logger" message="Received Message: #[payload]"/>
</flow>
</mule>