でイベント駆動型アーキテクチャイベントがシステムを介して送信されたときに各コンポーネントにのみ作用します。
ブレーキペダルとブレーキライトを備えた架空の車を想像してください。
- ブレーキライトターンにそれが受信したときbrake_onのイベントを、そしてオフそれが受信したときbrake_offのイベント。
- ブレーキペダルは、送信brake_onのそれが押下されたイベント、およびbrake_offの、それが解放されるイベントを。
これは、ブレーキペダルが既に踏み込まれた状態で車の電源が入る状況になるまで、すべてうまくいきます。ブレーキライトはbrake_onイベントを受け取ったことがないため、消灯したままになります。これは明らかに望ましくない状況です。デフォルトでブレーキライトをオンにすると、状況が逆転するだけです。
この「初期状態の問題」を解決するために何ができますか?
編集:すべての応答をありがとう。私の質問は実際の車に関するものではありませんでした。車では、状態を継続的に送信することでこの問題を解決しました。したがって、そのドメインにスタートアップの問題はありません。私のソフトウェアドメインでは、そのソリューションは多くの不必要なCPUサイクルを使用します。
編集2:@gbjbaanbの答えに加えて、私は次のようなシステムに行きます:
- 架空のブレーキペダルは、初期化後、その状態でイベントを送信し、
- 仮想ブレーキライトは、初期化後、ブレーキペダルからの状態イベントを要求するイベントを送信します。
このソリューションでは、コンポーネント間の依存関係、競合状態、失効するメッセージキュー、および「マスター」コンポーネントはありません。
initialize
、必要なセンサーデータを含む「合成」イベント(それを呼び出す)を生成することです。