你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

QueueClientOptions 类

定义

提供用于连接到 Azure 队列存储的客户端配置选项

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

获取或设置可为存储帐户读取的辅助存储 Uri (如果帐户已启用 RA-GRS)。

如果设置了此属性,则辅助 URI 将用于重试期间的 GET 或HEAD请求。 如果来自辅助 URI 的响应状态为 404,则请求的后续重试将不会再次使用辅助 URI,因为这表明资源可能尚未传播到该处。 否则,后续重试将在主要 URI 和辅助 URI 之间来回切换。

MessageEncoding

获取或设置一个消息编码,该编码确定如何在 Body HTTP 请求和响应中表示。 默认为 None

Retry

获取客户端重试选项。

(继承自 ClientOptions)
RetryPolicy

获取或设置用于重试的策略。 如果指定了策略,则将使用该策略来代替 Retry 属性。 RetryPolicy可以从 派生类型来修改默认行为,而无需完全实现重试逻辑。 如果 Process(HttpMessage, ReadOnlyMemory<HttpPipelinePolicy>) 重写或指定了自定义 HttpPipelinePolicy ,则实施者负责更新 ProcessingContext 值。

(继承自 ClientOptions)
Transport

HttpPipelineTransport要用于此客户端的 。 默认为 的 HttpClientTransport实例。

(继承自 ClientOptions)
Version

QueueClientOptions.ServiceVersion获取发出请求时使用的服务 API 的 。 有关详细信息,请参阅 Azure 存储服务的版本控制

方法

AddPolicy(HttpPipelinePolicy, HttpPipelinePosition)

HttpPipeline 策略添加到客户端管道中。 策略在管道中的位置由 position 参数控制。 如果希望每个客户端请求执行一次策略,请使用 PerCall ,否则使用 PerRetry 在每次重试时运行策略。 请注意, 的 policy 同一实例将添加到使用此 ClientOptions 对象构造的客户端的所有管道中。

(继承自 ClientOptions)

事件

MessageDecodingFailed

可选。 执行从队列接收消息或达到峰值但无法解码时所需的任务。

当预期为特定QueueMessageEncoding消息时QueueClient,可以接收或达到峰值,但有另一个生成者未按预期方式对消息进行编码。 即队列包含具有不同编码的消息。

QueueMessageDecodingFailedEventArgs 包含 QueueClient 已收到消息以及 ReceivedMessage 原始正文的 或 PeekedMessage ,即不会尝试解码,以便可以检查从队列收到的正文。

QueueClient不会尝试从队列中删除消息。 因此,此类处理应包含在事件处理程序本身中。

处理程序可能由同步和异步接收和速览 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);

适用于