1

製品カタログの公開プロセスを担当するサガ サービス ProcessCatalog があります。

クライアント アプリケーションは、PublishCatalog メッセージを送信します。各メッセージには、catalogid と項目リストが含まれています。

SagaId としてカタログ ID を選択しました。

ProcessCatalog サービスは、適切な順序で他のビジネス サービスを配置する長期実行ビジネス プロセスです。

公開プロセスを推進するために、ProcessCatalog は現在のカタログ アイテムの構成を念頭に置いておく必要があります。

同じユーザーが最初に UI ボタン​​を押して PublishCatalog(catalogId=1, Itemlist={A,B,C} ) を送信し、次にカタログの構成 (itemList ={A,D,E}) を変更するとどうなりますか? UI ボタン​​をもう一度クリックして、同じ CatalogId の別の PublishCatalog を送信しますか?

ProcessCatalog エンドポイントが 1 つのワーカースレッドで構成されている場合、すべて正常に動作します (私は思います)。しかし、workthread が 1 よりも大きく、2 つのメッセージが同時に処理される場合はどうなるでしょうか。2 番目のスレッドが 1 番目のスレッドの前に実行を完了するとどうなりますか?

これがビジネス設計上のバグなのか、それとも通常の技術的な問題なのかを尋ねます。

4

1 に答える 1

0

Saga は状態を管理しているため、2 つのメッセージは同じ Saga に関連付けられる必要があります。あなたの佐賀では、各メッセージに対処し、競合を解決する必要があります。ビジネス ルールでは、カタログの公開中にカタログが変更された場合にどうなるかを定義する必要があります。

Saga の完了が許可され、その後に別の Saga がカタログを変更する場合があります。通常、製品カタログの場合、消費者は最新のものだけを気にし、最初の公開後に変更を吸収することができます。何かを公開するために大量の作業がある場合は、佐賀をキャンセルして再開することをお勧めします。この場合、UI は、ユーザーがカタログを操作して完全に満足したときにコミットできるモデリング ツールにさらに変える必要があるかもしれません。

于 2012-09-17T13:33:35.787 に答える