私は最近、メッセージングアーキテクチャの使用を可能にするが、同じスレッドと異なるスレッドを使用するプロセスで実装されるさまざまなフレームワークがあることを見てきました。私が知っているのは、Spring、Guava EventBus、Reactorです。インプロセスイベントシステムとブローカを持つマイクロサービスの良いユースケースは何ですか?
私の質問は、完全な本物のブローカーにメッセージを送信する代わりに、誰かがメッセージを使用したいと思う良い使用例です。私は、その使用法がビジネスロジックのより良い分離を可能にすることを理解していますが、マイクロサービスアーキテクチャでは、通常、他のマイクロサービスが消費するイベントを公開します。その利点は、インスタンス内のエラーによる誤ったメッセージが別のインスタンスによって再試行されるブローカのクラスタを追加することによる障害許容度です。後で同じシステムで消費されるメッセージを送信することによって分解され実行されるロジックを実装すると、特にサブスクライバが異なるスレッドで実行されたときに、データを一貫した状態に戻すことが難しくなります。
私は最後の点に同意しません。私のスピードを向上させるために内部のメッセージに依存するシステムを設計することは、実際にはそれが必要ないことを示唆しています。メッセージを送信するために外部ブローカに頼ることで、新しいインスタンスを追加するだけでシステムを拡張できます。このようにして、どのインスタンスもメッセージを選択して処理を続行し、ノードに障害が発生した後に処理されなかったメッセージの再試行と組み合わされると、エラー許容度を追加できます。送信された各メッセージが一連のイベントの一部である場合、1つのメッセージが失われるとシステム全体が中断され、外部のブローカクラスタが解決するのに役立ちます。 – Kilian