0

nservicebus を使用したワークフロー プロセスの実装中に問題に直面しています。バージョン2.0.1329.2を使用しており、実装しようとしているワークフローは非常に単純です。

計算する必要がある記事のリストがあります。ワークフローは、公開された最初のリストから始まります。その後、ユーザーは元のリストからいくつかの記事を追加または削除して他の公開を行うことができます。すべてのリストにはコード識別子があります。

リストのコードで識別されるオーケストレーション サービスを使用して実装しました。佐賀データには、リストが作成された記事のすべての参照もあります。

問題は、ユーザーが同じリストの別の公開中に記事のリストを公開すると、プロセス状態のロックがなく、このように同時実行制御はありませんが、後で終了するハンドラーには独自のデータが保持されます。

例えば:

  1. 追加する 10 個の記事を含むリストが時間 [t] に到着し、オーケストレーション サービスがデータベースから saga データをロードし、時間 [t + 5] に変更して保存します。
  2. 追加する項目が 1 つあるリストが時刻 [t+1] に到着すると、オーケストレーション サービスはデータベースから saga データをロードし、時刻 [t+4] に変更して保存します。

時間[t + 6]に6つの追加要素が必要ですが、5つの追加要素しか得られません..

動作は次のようにすべきだと思います: 同じリストに関連する場合、2 番目のメッセージは、最初のメッセージが終了するまでプロセス状態がロックされていることを検出する必要があります。

このため、ワークフロー プロセスの実装をサポートするようにオーケストレーション サービスが適切に作成されていないかどうか疑問に思っていますが、ワーカー スレッドの数を 1 つだけに設定すると、並列効率が失われます。

4

2 に答える 2

1

非常に古いバージョンの NServiceBus を使用しているため、アップグレードする必要があります。それ以来、非常に多くのバグが修正されたため、これらの問題に対処するのに時間をかける価値はありません。

于 2012-09-18T14:06:11.800 に答える
0

すべての並行性の問題を回避するには、saga/長時間実行プロセスを設計する必要があります。他のことを言ったり、勧めたりするのは難しいです。

記事の公開に非常に長い時間がかかるため、同時実行の問題が発生しますか?
または、それらは頻繁に再発行されますか?

記事のリストが最初に公開されたとき、まだ生成されていないときに、他の誰かがそれを変更または再公開するにはどうすればよいですか?

于 2012-09-18T11:49:26.293 に答える