0

[わかりやすくするために編集]

正しく理解しているかどうかわかりません。

これらの有益な投稿によると、佐賀の内部ではすべてが簡潔かつ迅速でなければなりません。

  • ジョナサン・オリバーのまとめ: blog.jonathanoliver.com/…
  • ウディ・ダハンのオリジナル:skillsmatter.com/skillscasts/…
  • そしていくつかの以前の投稿
  • lostechies.com/jimmybogard/2013/03/26/scaling-nservicebus-sagas
  • docs.particular.net/nservicebus/アーキテクチャ/原則

つまり、サガにはビジネス ロジックがなく、内部に if-else 命令があってはなりません。それは単なるオーケストレーターであるべきであり、それを呼び出すことは「成功志向」であるように計画する必要があります。つまり、Saga を呼び出す前に、可能な限り多くの検証を行う必要があります。

しかし、個別のハンドラー (「独立したハンドラー」と呼んでいますか?)、つまり、サガ内にないハンドラーについてはどうでしょうか? 次のうち、正しいものはどれですか。

を。サガ外の NServiceBus メッセージ ハンドラーは常に迅速に完了し、時間のかかるアクションがある場合はそれをスレッドに渡して完了する必要がありますか?

b. または、ハンドラーを「独り占め」したほうがよいのでしょうか。そうすれば、NServiceBus はこのメッセージが高い料金で使用されていることを「認識」し、それに応じてアクションを実行できます。つまり、自動負荷分散を使用して、処理プロセスの別のインスタンスを作成します別のプロセスまたは別のマシンですか?

正しい方法は何ですか?

また、メソッドを呼び出して、回答とともにサンプル コードを提供できますかFoo.DoTimeConsumingBar()

ありがとうございました。

4

2 に答える 2

1

@pashute、Sagas に関するあなたの発言は正しいです。作業 (I/O) を行わず、長時間実行されるビジネス プロセスのコレオグラファーとして機能する必要があります。

ハンドラーはSRP の単一責任の原則に従う必要があり、たとえ I/O 集中型であってもハンドラーをスリムに保つ必要があります。I/O 集中型操作の場合、ディストリビューター/ロード バランサーが負荷のスケールアウトに役立ちます。

それは理にかなっていますか?

于 2016-03-19T11:33:01.783 に答える
1

Saga 内では、すべてが簡潔かつ迅速でなければなりません。

この声明は何の意味もありません。簡潔にとはどういう意味ですか? 速いってどういうこと?サガは、それが実行されているコンテナーの制約内で可能な限り迅速に機能します。

サガ外の NServiceBus メッセージ ハンドラーは常に迅速に完了し、時間のかかるアクションがある場合はそれをスレッドに渡して完了する必要がありますか?

そのようにハンドラーを構築していない限り、いいえ。メッセージ処理プロセスに時間がかかる場合、メッセージを処理するハンドラ インスタンス以外のプロセスはありません。

それとも、ハンドラーを「独り占め」して、NServiceBus がこのメッセージが高い料金で使用されていることを「認識」し、それに応じて、つまり自動負荷分散を使用してアクションを実行できるようにする方がよいでしょうか?

マルチスレッドで実行すると、複数のハンドラ インスタンスを使用してメッセージを処理できます。各ハンドラ インスタンスは 1 つのメッセージのみを処理しますが、これは同時に発生する可能性があります。入力キューというメッセージの単一ソースがあるため、これにより、必要な「負荷分散」動作が提供されます。

サガ内にビジネスロジックがないように、できる限りのことを行う必要があります.....サガの前にできるだけ多くの検証を行う「成功志向」である必要があります。成功するために

はい、英雄譚は、その詳細ではなく、長時間実行されるプロセスのオーケストレーションのみに関係する必要があります。

上記に照らして、元の質問の1つに対する回答を変更します。

サガ外の NServiceBus メッセージ ハンドラーは常に迅速に完了し、時間のかかるアクションがある場合はそれをスレッドに渡して完了する必要がありますか?

ハンドラーをすばやく完了する必要は特にありません。サガの重要な点は、使用されていない場合はディスクに脱水するということです。そのため、外部メッセージ ハンドラが作業を完了するまでサガがメモリを占有するのを待っているわけではありません。

負荷分散に関する他の質問については、質問に対する私の理解に基づいて、私の答えがまだ有効であると思います。

于 2015-12-18T11:02:14.907 に答える