データベースへの書き込みと同時にメッセージキューへの送信を行う必要がある場面は数多く存在します。例えば、ECサイトで注文処理を行う際に、注文データをデータベースに保存すると同時に、在庫管理システムや配送システムに通知を送る必要があります。
しかし、この一見単純な処理には重大な問題が潜んでいます。データベースの書き込みとメッセージキューへの送信が別々のシステムである以上、一方が成功して他方が失敗する可能性があります。この問題を解決するのが、本章で解説するTransactional Outboxパターンです。
データベースとメッセージキュー間の一貫性の問題
分散システムにおいて、複数の独立したシステム間でデータの一貫性を保つことは困難です。特に、データベースとメッセージキューという異なる性質を持つシステム間では、以下のような問題が発生します。