2016-12-19 5 views
0

MSMQを使用するアプリケーションを、MSMQまたはサービスバス(オンデマンドまたはAzureバージョンのいずれか)のキューを処理できるアダプタよりもインターフェイスを使用するように変換しています。 MSMQのアプリケーションの用途の1つに、システムに特定の操作を実行するための適切な権限があるかどうかを判断するための構成インスペクタ機能があります。 System.Messaging.MessageQueue.CanReadを使用して、アプリケーションにとって重要な特定のキューを正常に読み取ることができるかどうかを確認します(顧客による頻繁なセキュリティ設定ミス)。サービスバスはMSMQのCanReadに相当しますか?

サービスバスの中で最も優れているのは私には分かりません。アプローチについての私の最初の考えは、QueueClient.Peek()に試みてその後の例外をキャッチすることです。 Peekメソッドはタイムアウトパラメータを提供しないので、私はこれがすぐに起こることを願っています。私はタイムアウトを使用することを好んでいますので、現在読むべきメッセージがないというシナリオですぐに戻ることができます。小さな待ち時間で渡すことができるReceive(TimeSpan serverWaitTime)がありますが、メッセージを受信するとトランザクションを使用して中止する必要があります。それは私がむしろ好まないときに待ち行列をロックするだろう。

私は欠けているよりよい選択肢があると思っています。

+0

現在、このような機能はありません。 –

+1

レシーバを作成するときは、ネームスペース+ sasキーの接続文字列を指定する必要があります。キューに対して読み取り権限を許可しないsasキーを指定すると、 – Thomas

+0

@Thomasという例外が発生しますが、これは正常に機能します。あなたが答えとしてそれを含めることを望むなら、私はそれを受け入れたとマークします。このような遅れた応答をおかけして申し訳ありません。 – DannyMeister

答えて

0

MessageReceiverを作成する場合は、namespace + sasキーの接続文字列を指定する必要があります。キューに対する読み取りアクセスを許可しないsasキーを指定すると、例外が発生します。

関連する問題