Share via


QueueClientOptions クラス

定義

Azure Queue Storage に接続するためのクライアント構成オプションを提供します

public class QueueClientOptions : Azure.Core.ClientOptions
type QueueClientOptions = class
    inherit ClientOptions
Public Class QueueClientOptions
Inherits ClientOptions
継承
QueueClientOptions
派生

コンストラクター

QueueClientOptions(QueueClientOptions+ServiceVersion)

QueueClientOptions クラスの新しいインスタンスを初期化します。

プロパティ

Audience

Azure Active Directory (AAD) での認証に使用する対象ユーザーを取得または設定します。 共有キーを使用する場合、対象ユーザーは考慮されません。

Diagnostics

クライアント診断オプションを取得します。

(継承元 ClientOptions)
EnableTenantDiscovery

TokenCredential を使用するようにクライアントが構成されている場合に、承認チャレンジによるテナント検出を有効にします。 有効にすると、クライアントは最初の承認されていない要求を試み、リソースの正しいテナントを検出するためにチャレンジを求めます。

GeoRedundantSecondaryUri

アカウントが RA-GRS に対して有効になっている場合に、ストレージ アカウントの読み取り元となるセカンダリ Uri ストレージを取得または設定します。

このプロパティを設定すると、再試行中に GET またはHEAD要求にセカンダリ URI が使用されます。 セカンダリ Uri からの応答の状態が 404 の場合、リソースがまだ伝達されていない可能性があることを示すので、要求の後続の再試行ではセカンダリ Uri が再度使用されません。 それ以外の場合、後続の再試行はプライマリ URI とセカンダリ URI の間で交互に行われます。

MessageEncoding

HTTP 要求と応答での表現方法 Body を決定するメッセージ エンコードを取得または設定します。 既定値は、None です。

Retry

クライアントの再試行オプションを取得します。

(継承元 ClientOptions)
RetryPolicy

再試行に使用するポリシーを取得または設定します。 ポリシーが指定されている場合は、 プロパティの代わりにポリシーが Retry 使用されます。 型を RetryPolicy から派生して、再試行ロジックを完全に実装しなくても、既定の動作を変更できます。 がオーバーライドされた場合、またはカスタムHttpPipelinePolicyが指定されている場合Process(HttpMessage, ReadOnlyMemory<HttpPipelinePolicy>)は、実装者が値を更新するProcessingContext必要があります。

(継承元 ClientOptions)
Transport

HttpPipelineTransportこのクライアントに使用する 。 既定値は の HttpClientTransportインスタンスです。

(継承元 ClientOptions)
Version

QueueClientOptions.ServiceVersion要求を行うときに使用されるサービス API の を取得します。 詳細については、「詳細」を参照してください。 Azure Storage サービスのバージョン管理

メソッド

AddPolicy(HttpPipelinePolicy, HttpPipelinePosition)

ポリシーを HttpPipeline クライアント パイプラインに追加します。 パイプライン内のポリシーの位置は、 パラメーターによって position 制御されます。 クライアント要求ごとにポリシーを 1 回実行する場合は、 を使用PerCallPerRetryして再試行ごとにポリシーを実行します。 の同じインスタンス policy は、この ClientOptions オブジェクトを使用して構築されたクライアントのすべてのパイプラインに追加されることに注意してください。

(継承元 ClientOptions)

イベント

MessageDecodingFailed

省略可能。 キューからメッセージを受信またはピークしたときに必要なタスクを実行しますが、デコードできません。

このようなメッセージは、特定QueueMessageEncodingのメッセージを予期しているが、予期された方法でメッセージをエンコードしていない別のプロデューサーがある場合QueueClientに、受信またはピークに設定できます。 つまり、キューにはエンコードが異なるメッセージが含まれています。

QueueMessageDecodingFailedEventArgsQueueClientには、メッセージReceivedMessagePeekedMessageを受信した本文と未加工の本文が含まれています。つまり、本文をキューから受信したとおりに検査できるようにデコードは試行されません。

では QueueClient 、キューからメッセージの削除は試行されません。 そのため、このような処理はイベント ハンドラー自体に含める必要があります。

ハンドラーは、同期と非同期の両方の受信 API とピーク API によって呼び出される可能性があります。 したがって、ハンドラーの実装は、使用されている API に合わせる QueueClient 必要があります。 ハンドラーを正しく実装する方法を参照してください SyncAsyncEventHandler<T> 。 次の例は、考えられるすべてのケースを調べるハンドラーを示しています。

QueueClientOptions queueClientOptions = new QueueClientOptions()
{
    MessageEncoding = QueueMessageEncoding.Base64
};

queueClientOptions.MessageDecodingFailed += async (QueueMessageDecodingFailedEventArgs args) =>
{
    if (args.PeekedMessage != null)
    {
        Console.WriteLine($"Invalid message has been peeked, message id={args.PeekedMessage.MessageId} body={args.PeekedMessage.Body}");
    }
    else if (args.ReceivedMessage != null)
    {
        Console.WriteLine($"Invalid message has been received, message id={args.ReceivedMessage.MessageId} body={args.ReceivedMessage.Body}");

        if (args.IsRunningSynchronously)
        {
            args.Queue.DeleteMessage(args.ReceivedMessage.MessageId, args.ReceivedMessage.PopReceipt);
        }
        else
        {
            await args.Queue.DeleteMessageAsync(args.ReceivedMessage.MessageId, args.ReceivedMessage.PopReceipt);
        }
    }
};

QueueClient queueClient = new QueueClient(connectionString, queueName, queueClientOptions);

適用対象