アクソンフレームワーク:2または3 microservices間の補償イベントと佐賀プロジェクト

polosoft:

私はアクソン佐賀について質問があります。私は、各microserviceが彼自身のデータベースを持って、私は3 microservicesを持ってプロジェクトを持っていますが、私はアクソン佐賀を使用することのための2つの「スレーブ」microserviceは、「マスター」microserviceに自分のデータを共有することがあります。私はすでに補償、何かがうまくいかない、と私は自分自身による補償に対処しなければならないとき、それはOKですが、理想的ではないについての質問をしました。現在、私はmicroservices間の通信にDistributedCommandBusを使用しています、それはそれのために良いのですか?私はここで、それは今のような表情は何かということです、振付佐賀モデルを使用しています:

  1. マスター - >コマンドを送信する - >スレーブ1 - >ハンドルイベント
  2. スレーブ1 - >バックコマンドを送信する - >マスター - >ハンドルイベント
  3. マスター - >コマンドを送信する - > Slave2を - >ハンドルイベント
  4. スレーブ2 - >バックコマンドを送信する - >マスター - >ハンドルイベント

何かが間違っていた場合は、逆方向に補償するコマンド/イベントが来ます。

私の質問は誰が補償して軸索を持つこのような何か、そのために、どのようなベストプラクティスをやっていますか?どのように私は佐賀・プロセスを再試行することができますか?RetrySchedulerでは?可能な場合はgithubのレポを追加します。

おかげで、マット

スティーブン:

まず第一に、私はあなたの主な質問に答えてみましょう:

私の質問は、誰もがアクソンと、このような何かをしたしているのですか?

まもなく、はい、このようサガのための主な使用例です。経験則として、私は佐賀をするために使用することができ述べるたいのですが、複雑なビジネストランザクション座標間を:

  1. 複数の別個の集計インスタンス
  2. いくつかの有界コンテキスト

額面では、それはあなたが複雑なビジネストランザクションを委任するオプション2に上陸してきたようです。

あなたがサガを使用しているとき、あなたがすべきことに注意することが重要である非常に意識的に対処する任意の例外および/またはコマンドを派遣した結果。

あなたが「マスター」から「スレーブ1」にコマンドを派遣し、後者は操作を失敗した場合はこのように、この結果は戻ってくる佐賀で。これは、このように私が行うにはお勧めしている、あなたの操作を再試行するには、最初のオプションを与える補償アクション最後に、補償アクションで、私はそれをトリガーするコマンドを派遣について話しています。

このコマンドを派遣から直接応答に頼ることができない場合は、佐賀内のメッセージを再スケジューリング/再試行することは合理的な第二の選択肢になります。

そのために、軸索がありEventSchedulerDeadlineManager2の前者はイベント公開することに注意してください誰もが参照するために後者のスケジュールDeadlineMessageその単一佐賀インスタンスのコンテキスト内では、このようにして再試行が発生して見ることができる人の範囲を限定します。

一般的に、DeadlineManagerあなたは皆で見られるようにこの「再スケジュールアクション」を必要としない限り、これに対する操作の私の好みのモードになります。FYI、チェックこのページをEventScheduler情報と、このページDeadlineManagerの情報。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=336596&siteId=1