0

私は晴れのサービスバス購読とトピックを使用して、注文を送信し、注文を受け取ります。我々は、紺碧のサービスバス購読からWeb APIを使用して注文を引き出すウィンドウズアプリを持っています。紺碧のサービスバス購読からすべての仲介されたメッセージを受け取ることができません。

ユーザーがログインして5つの注文を受けたとします。ユーザーがWindowsアプリケーションからログアウトすると、紺色のサービスバスからメッセージがロック解除されます。ユーザーが5分以内に再度ログを記録すると、紺碧のサービスバスからすべての注文を得ることはできません。時々3または4のように来る。

誰もがこの問題に関して私を助けてくれるのですが、なぜ5つのオーダーをもう一度受け取っていないのでしょうか。私はメッセージをプルするために、subscribeclinetのReceiveBatchメソッドを使用しています。

+0

2番目の段落について詳しく説明できますか?あなたは「fユーザーがWindowsアプリケーションからログアウトし、次に紺色のサービスバスからメッセージをロック解除する」という意味ですか?また、ユーザーがログインしているときに、すべてのメッセージをプルダウンしていますか? –

+0

こんにちはショーン、私はWindowsアプリケーションにログイン/ログアウト機能があることを意味します。ユーザーがログインすると、peeklockメソッドでazureからメッセージがプルされ、メッセージの処理に時間がかかるため、メッセージのロック時間は5分に設定されます。私たちがメッセージでやり遂げたならば、それはサービスバス購読から完全なものであるとマークします。ユーザーがログアウトしたときにメッセージのロックを解除しないと、azureによって自動的にロック解除されないメッセージが表示されます。だから、ユーザーがログアウトすると、私たちは手動でazureからメッセージを放棄して、他のWindowsアプリケーションのユーザーがそのメッセージを取得できるようにします。 –

+0

また、TTL(TimeToLive)期限切れの問題かもしれません。 –

答えて

0

配信数の問題が発生していると思われます。あなたが言っていることを正しく理解していると仮定すると、WindowsアプリケーションはPeekLockモードでメッセージをプルします。メッセージが処理されると、完了します。それ以外の場合は、アプリケーションを終了すると、メッセージを放棄します。メッセージの処理が完了せず、ユーザーが終了すると、メッセージは破棄され、DeliveryCountは増加します。 DeliveryCountがエンティティで設定された最大値を超えると、メッセージは無効になり、もはや配信されなくなります。

  1. は、あなたがこのケースで動作
  2. であれば、彼らは私が扱うより簡単にエラーをcentralising your DLQsに見てお勧め、DLQedであることを確認するDLQをentity`sチェックエンティティであなたのMaxDeliveryCountをチェック
関連する問題