你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 .NET 的 Azure WebJobs 存储队列客户端库 - 版本 5.2.0
此扩展提供在 Azure Functions 中访问 Azure 存储队列的功能。
入门
安装包
使用 NuGet 安装存储队列扩展:
dotnet add package Azure.WebJobs.Extensions.Storage.Queues
先决条件
需要一个 Azure 订阅 和一个 存储帐户 才能使用此包。
若要创建新的存储帐户,可以使用 Azure 门户、Azure PowerShell或 Azure CLI。 下面是使用 Azure CLI 的示例:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
验证客户端
为了使扩展能够访问队列,需要可在 Azure 门户 或使用以下 Azure CLI 代码片段找到的连接字符串。
az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>
可以通过 AzureWebJobsStorage 应用设置提供连接字符串。
关键概念
使用队列触发器
当消息添加到 Azure 队列存储时,队列存储触发器将运行函数。
请按照教程了解如何在 Azure Functions 中侦听队列。
使用队列绑定
Azure Functions 可以通过设置输出绑定来创建新的 Azure 队列存储消息。
请按照绑定教程进行操作,了解如何使用此扩展在 Azure Functions 中将消息生成到队列中。
示例
侦听队列
以下一组示例演示如何接收和响应要添加到队列的消息。
将队列消息绑定到字符串
public static class QueueTriggerFunction_String
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] string message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message);
}
}
将队列消息绑定到 BinaryData
public static class QueueTriggerFunction_BinaryData
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] BinaryData message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message.ToString());
}
}
将队列消息绑定到 QueueMessage
public static class QueueTriggerFunction_QueueMessage
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] QueueMessage message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message.Body.ToString());
}
}
将队列消息绑定到自定义类型
public static class QueueTriggerFunction_CustomObject
{
public class CustomMessage
{
public string Content { get; set; }
}
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] CustomMessage message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message.Content);
}
}
将队列消息绑定到 JObject
public static class QueueTriggerFunction_JObject
{
[FunctionName("QueueTriggerFunction")]
public static void Run(
[QueueTrigger("sample-queue")] JObject message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message["content"]);
}
}
将消息发布到队列
以下一组示例演示如何使用 Queue
属性将消息添加到队列。
QueueTrigger
仅用于示例完整性,即可以改用任何其他触发机制。
将消息作为字符串发布
public static class QueueSenderFunction_String_Return
{
[FunctionName("QueueFunction")]
[return: Queue("sample-queue-2")]
public static string Run(
[QueueTrigger("sample-queue-1")] string message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", message);
logger.LogInformation("Dispatching message to sample-queue-2");
return message;
}
}
将消息作为 BinaryData 发布
public static class QueueSenderFunction_BinaryData_Return
{
[FunctionName("QueueFunction")]
[return: Queue("sample-queue-2")]
public static BinaryData Run(
[QueueTrigger("sample-queue-1")] BinaryData message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", message.ToString());
logger.LogInformation("Dispatching message to sample-queue-2");
return message;
}
}
将消息作为 QueueMessage 发布
public static class QueueSenderFunction_QueueMessage_Return
{
[FunctionName("QueueFunction")]
[return: Queue("sample-queue-2")]
public static QueueMessage Run(
[QueueTrigger("sample-queue-1")] QueueMessage message,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", message.Body.ToString());
logger.LogInformation("Dispatching message to sample-queue-2");
return message;
}
}
通过 out 参数将消息作为自定义类型发布
public static class QueueSenderFunction_CustomObject_OutParamter
{
public class CustomMessage
{
public string Content { get; set; }
}
[FunctionName("QueueFunction")]
public static void Run(
[QueueTrigger("sample-queue-1")] CustomMessage incomingMessage,
[Queue("sample-queue-2")] out CustomMessage outgoingMessage,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", incomingMessage.Content);
logger.LogInformation("Dispatching message to sample-queue-2");
outgoingMessage = incomingMessage;
}
}
通过收集器将消息作为自定义类型发布
public static class QueueSenderFunction_CustomObject_Collector
{
public class CustomMessage
{
public string Content { get; set; }
}
[FunctionName("QueueFunction")]
public static void Run(
[QueueTrigger("sample-queue-1")] CustomMessage incomingMessage,
[Queue("sample-queue-2")] ICollector<CustomMessage> collector,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue-1, content={content}", incomingMessage.Content);
logger.LogInformation("Dispatching message to sample-queue-2");
collector.Add(incomingMessage);
}
}
访问队列属性
public static class Function_BindingToQueueClient
{
[FunctionName("QueueFunction")]
public static async Task Run(
[QueueTrigger("sample-queue")] string message,
[Queue("sample-queue")] QueueClient queueClient,
ILogger logger)
{
logger.LogInformation("Received message from sample-queue, content={content}", message);
QueueProperties queueProperties = await queueClient.GetPropertiesAsync();
logger.LogInformation("There are approximatelly {count} messages", queueProperties.ApproximateMessagesCount);
}
}
配置扩展
请参阅 示例函数应用。
疑难解答
有关故障排除指南,请参阅监视Azure Functions。
后续步骤
阅读 Azure 函数简介 或 创建 Azure 函数指南。
贡献
有关构建、测试和参与此库的详细信息,请参阅 存储 CONTRIBUTING.md 。
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。