プリアンブル:非常に一般的なユースケースと思われるものについて提案をまとめようとしています。目標を達成するために Amazon の SWF と SQS を使用したいと考えています。私がやろうとしていることにより適したサービスが他にもあるかもしれません。
問題:最も基本的な必要性は、クライアント (モバイル デバイス、Web サーバーなど) が、クライアントへの応答なしで非同期に処理されるメッセージを投稿することです。これは非常に基本的なことです。
意図した実装は、クライアントが事前に決定された SQS キューにメッセージをポストすることです。その時点で、クライアントは完了です。また、メッセージをキューから取得し、(何らかの操作を行った後) Dynamo DB に配置する役割を担う、定義済みの SWF ワークフローも用意します。これも、すべて非常に簡単です。
私が理解できないように見えるのは、ワークフローを開始する方法です。私が読んだことから、ワークフローは無期限のプロセスであることを意図したものではありません。始まり、中間、終わりがあります。SWF のドキュメントによると、ワークフローは 1 年以上実行できません ( SWF でのタイムアウト値の設定)。
ですから、私の質問は次のとおりです。ワークフローが 1 つのメッセージ処理フローを表していると仮定すると、メッセージが SQS に投稿されるたびにワークフローを開始するにはどうすればよいですか?
警告: SQS の代わりに SNS を使用することも検討しました。これにより、SNS をサブスクライブできるサーバーを実行し、通知が投稿されるたびにワークフローを開始できます。それは確かに1つの解決策ですが、処理されるメッセージの数に応じて管理/スケーリングする必要がある単一のWebサービス用にサーバーをセットアップすることは避けたいと思います。そもそも SQS/SWF の使用を検討している理由は、心配する必要のない自動スケーリング システムを用意するためです。
前もって感謝します。