問題タブ [azure-servicebus-topics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - トピックにパブリッシュし、Azure Service Bus で別のトピックにサブスクライブする統合テストは信頼できません。競合状態はありますか?
Azure でいくつかのコードをテストするための統合/受け入れテストを作成しようとしています。ATM の質問のコードは、単に 1 つのトピックにサブスクライブし、別のトピックに発行します。
私はテストを書きましたが、常に合格するとは限りません。競合状態が発生している可能性があるようです。OnMessage の使用や Receive の使用など、いくつかの方法で記述してみました (ここに示す例)。
OnMessage を使用すると、テストは常に途中で終了するように見えました (約 30 秒)。これはおそらく、このテストには不適切であることを意味します。
特に私の例に関する私の質問は、ターゲットトピックへのサブスクリプションを作成すると、そこに送信されたメッセージは、メッセージが到着した時点が何であれ、Receive() を使用してピックアップできると仮定しました。 Receive() を呼び出す前にターゲット トピックで、Receive() を呼び出して後でメッセージを読み取ることができます。誰でもこれに光を当てることができますか?
c# - Azure Service Bus トピック サブスクライバーの受注
ソリューションのメッセージ ブローカーとして Azure Service Bus トピックを使用しています。各サブスクリプションについての私の理解によると、Azure Message Bus は仮想キューを保持しているため、メッセージの受信順序が乱れることはありません。
しかし、実際には少し異なります。私のシナリオでは
- 入力はおよそ 2 秒ごとです (タイムスタンプは正しいです。確認済みです)。
- レシーバーをしばらく切断すると、メッセージはサブスクリプションに対して Azure でキューに入れられ始めます。
- 次に、レシーバーを再度接続すると、受信コードは非常に迅速にメッセージを受信しますが、順序は維持されませんか?
- ただし、クライアントを接続したままにすると、メッセージは順番に受信されます (2 秒後に 1 つのメッセージ)
受信コード
出力
なぜそうなのか、誰か説明してもらえますか?それは私にとって少し混乱していますか?