1

注文の送信と注文の取得に Azure Service Bus サブスクリプションとトピックを使用しています。Azure Service Bus サブスクリプションから Web API を使用して注文を取得する Windows アプリがあります。

ユーザーがログインして 5 件の注文を受けたとします。ユーザーが Windows アプリからログアウトすると、Azure Service Bus からのメッセージのロックが解除されます。ユーザーが 5 分以内に再度ログインすると、Azure Service Bus からすべての注文を取得できません。時々3つか4つのように来ます。

この問題について誰か助けてもらえますか? なぜ 5 件すべての注文を受け取れないのですか? メッセージをプルするために、subscriptionclinet の ReceiveBatch メソッドを使用しています。

4

1 に答える 1

0

ここで配信数の問題が発生していると思われます。あなたの言っていることを正しく理解したと仮定すると、Windows アプリはメッセージをPeekLockモードで引き出します。メッセージが処理されたら、それを完了します。そうしないと、アプリケーションを終了するときにメッセージを破棄します。メッセージの処理を完了せずにユーザーが終了すると、メッセージは破棄され、DeliveryCount増加します。エンティティの最大セットを超えるとDeliveryCount、メッセージは配信不能になり、配信されなくなります。

  1. MaxDeliveryCountエンティティを確認してください
  2. エンティティの DLQ をチェックして、これが動作であるかどうかを確認します
  3. DLQ されている場合は、エラー処理を容易にするために DLQ を集中化することを検討することをお勧めします。
于 2016-08-05T23:21:26.927 に答える