1

キューにあるすべてのメッセージに対して並列 foreach ループを実行しようとしていますが、次のエラーが発生します。

エラー: メッセージの受信時にプロパティ ボディが取得されませんでした。PropertyFilter が正しく設定されていることを確認してください。

foreach (並列なし) で同じループを実行すると、すべてうまくいきます。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

5

msdnによると、スレッドセーフではない方法を使用しているように見えます

GetAllMessages メソッドのみがスレッド セーフです

于 2012-08-17T22:12:18.677 に答える
2

Peek()and Receive()(およびそのバリエーション) はスレッドセーフではありません。衝突を避けるために、ブロッキング メカニズムを考え出す必要があります。

于 2012-08-17T22:23:44.810 に答える
1

並列処理は、シーケンシャルで (構成されている場合) トランザクションであるため、キューからメッセージを取得する場合には機能しません。

A と B を削除し、A の処理が失敗した場合、キューに戻されますが、B も削除されていますか?

GetAllMessages()それらのすべてを返しますが、それらを削除しません。Receive()メッセージをキューから完全に削除するには、各メッセージを個別に使用する必要があり ます。

于 2012-08-27T10:35:58.283 に答える