SNSとSQSのファンアウトをやってみた
AWS DVAの勉強をしていたら、SNSとSQSを連携した「ファンアウト」という構成を知り、公式にチュートリアルがあったのでやってみました。
動画
ファンアウトについて
AWS Black Belt Online Seminar Amazon Simple Queue Serviceより
SNSを挟むことで、プロデューサーはSNSトピックにだけメッセージを配信すればよいので、実装も楽になります。
公式チュートリアルに沿ってやってみる
ファンアウトイベント通知を送信する方法
チュートリアルは大きく4つのステップになっています。
- SNSトピックを作成
- 2つのSQSキューを作成
- SNSからメッセージを配信
- 各キューでメッセージを確認
1. SNSトピックを作成
まずはSNSトピックを作成します。
SNSコンソールに移動します。
トピック名に「New-Orders」と入力し、「次のステップ」をクリックします。
デフォルト設定のまま、「トピックの作成」をクリックします。
これでSNSトピックの作成は完了です。
2. 2つのSQSキューを作成
続いて、
・Orders-for-Inventory
・Orders-for-Analytics
という2つのSQSキューを作成し、SNSトピックをサブスクライブします。
SQSコンソールに移動します。
「キューを作成」をクリックします。
名前に「Orders-for-Inventory」と入力します。
その他の設定はデフォルトのまま、「キューを作成」をクリックします。
「Orders-for-Inventory」というSQSキューができました。
続いて「Orders-for-Analytics」とうキューも同様の手順で作成します。
これでキューはできましたが、まだSNSと連携できていないので、各キューからSNSトピックをサブスクライブします。
キューを選択し、「アクション」から「Amazon SNSトピックにサブスクライブ」をクリックします。
作成しておいた「New-Orders」トピックを選択し、「保存」をクリックします。
これでSQSとSNSがつながりました。
もう1つのキューでも同様にSNSトピックをサブスクライブします。
これでSQSの作成と、SNSトピックのサブスクライブの設定は完了です。
3. SNSからメッセージを配信
それでは、実際にSNSからメッセージを配信してみます。
SNSコンソールで「New-Orders」トピックを選択し、「メッセージの発行」をクリックします。
件名に「Order 123-4567890-1234567」、
メッセージ本文に
1 x Widget @ $29.99 USD
2 x Widget Cables @ $4.99
と入力します。
その他設定はデフォルトのまま、「メッセージの発行」をクリックします。
これでSQSにメッセージが配信されたはずです。
4. 各キューでメッセージを確認
SNSから発行したメッセージがSQSキューに届いているか確認してみます。
キューの画面から「メッセージを送受信」をクリックします。
「メッセージをポーリング」をクリックします。
ポーリングが始まるので、完了まで待機します。
ポーリングが完了したら、受信したメッセージのIDをクリックします。
SNSからのメッセージであることが確認できます
もう1つのキューでも同様のメッセージが配信されているか確認します。
先ほどとは違うメッセージIDで受信しています。
メッセージの内容は同じです。
これで、1つのSNSトピックから2つのSQSキューにメッセージを送ることができました。
あとはコンシューマー側でキューからメッセージを取得して、任意の処理をするという流れになるかと思いますが、今回はここまでにします。
まとめ
今回はSNSとSQSのファンアウトをやってみました。
シンプルなチュートリアルで、設定自体は簡単だったのでぜひやってみてください。
参考になれば幸いです。
Discussion