Question/Problem
イベントトリガーを使用するプロセスをAutomation CloudとStudioの両方から実行するとイベントは重複して処理されますか?
Resolution
Automation CloudのイベントトリガーはIntegration Serviceに作成したコネクションを通じて、任意の外部サービス上で処理対象のイベントが発生するたびに処理を行う機能です。
これらのイベントは通常1つのイベントトリガーで漏れ無く重複なく処理されることが期待されますが、イベントトリガーを使用するプロセスをAutomation CloudとStudioの両方から実行するとイベントが重複して処理されることがあります。
-
Automation Cloudのイベントトリガーでは新しく発生したイベントがイベントトリガーの結果として返されます
-
Studioでの実行ではAutomation Cloudにキャッシュされた最新のイベントがイベントトリガーの結果として返されます。
イベントトリガーが使用される場所 | イベントトリガーの返す値 |
---|---|
Automation Cloudのイベントトリガー | 新しく発生したイベント |
Studioでのプロジェクトの実行 | Automation Cloudにキャッシュされた最新のイベント |
上記2つの処理が重なった場合にAutomation Cloudのイベントトリガーで処理されるイベントに加え、Studioでの実行のタイミングでAutomation Cloudに保存されていたキャッシュが使用されることで同じイベントが重複して処理されることがあります。
イベントが重複して処理されると問題が生じる場合はべき等(同じ処理を繰り返し実行しても結果が想定外なものにならない)な処理となるようにワークフローを実装してください。
べき等な実装の例:
「新しいメールが届くたびにSlackでチャンネルにポストして通知を行う」というシナリオで、ポストを行う前にData Serviceにレコードを作成し、処理の重複をレコードの重複によって検知する。あるいはOrchestratorのキュー機能を使用した構成にプロセスを変更し、キューアイテムの重複エラーによって重複した処理を検知する。
なおこの記事の内容とは直接関係しませんが、Automation Cloud上のイベントのキャッシュは一定時間で自動的に消去されることに注意してください。