Microsoft.Azure.WebJobs.Extensions.EventGrid 3.4.2

前缀已保留
dotnet add package Microsoft.Azure.WebJobs.Extensions.EventGrid --version 3.4.2                
NuGet\Install-Package Microsoft.Azure.WebJobs.Extensions.EventGrid -Version 3.4.2                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventGrid" Version="3.4.2" />                
对于支持 PackageReference 的项目,将此 XML 节复制到项目文件以引用此包。
paket add Microsoft.Azure.WebJobs.Extensions.EventGrid --version 3.4.2                
#r "nuget: Microsoft.Azure.WebJobs.Extensions.EventGrid, 3.4.2"                
#r 指令可用于 F# Interactive 和多语言笔记本。将此复制到交互式工具或脚本的源代码中,以引用此包。
// Install Microsoft.Azure.WebJobs.Extensions.EventGrid as a Cake Addin
#addin nuget:?package=Microsoft.Azure.WebJobs.Extensions.EventGrid&version=3.4.2

// Install Microsoft.Azure.WebJobs.Extensions.EventGrid as a Cake Tool
#tool nuget:?package=Microsoft.Azure.WebJobs.Extensions.EventGrid&version=3.4.2                

Azure WebJobs EventGrid 客户端库 for .NET

此扩展为 Azure Functions 中接收 Event Grid webhook 调用提供功能,使您能够轻松编写响应 Event Grid 发布的任何事件的函数。

入门步骤

安装包

使用 NuGet 安装 Event Grid 扩展

dotnet add package Microsoft.Azure.WebJobs.Extensions.EventGrid

先决条件

您必须拥有一个Azure 订阅以及一个包含自定义事件网格主题或域的Azure资源组。请按照以下分步教程注册事件网格资源提供程序,并使用Azure门户创建事件网格主题。还有一个类似的教程使用Azure CLI

验证客户端

为了扩展能发布事件,您需要事件网格主题的endpoint和证书credential,这可以使用主题的访问密钥创建。

您可以在Azure门户中找到事件网格主题的endpoint,或者使用以下Azure CLI代码片段。

az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"

访问密钥也可以通过门户或使用以下Azure CLI代码片段找到

az eventgrid topic key list --name <your-resource-name> --resource-group <your-resource-group-name> --query "key1"

关键概念

使用事件网格输出绑定

请按照绑定教程了解如何使用此扩展发布EventGrid事件。

使用事件网格触发器

请按照教程了解如何在发布事件时触发Azure Function。

示例

使用事件网格输出绑定的函数

如果您的主题使用EventGrid模式,您可以输出EventGridEvents。

public static class EventGridEventBindingFunction
{
    [FunctionName("EventGridEventBindingFunction")]
    public static async Task<IActionResult> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [EventGrid(TopicEndpointUri = "EventGridEndpoint", TopicKeySetting = "EventGridKey")] IAsyncCollector<EventGridEvent> eventCollector)
    {
        EventGridEvent e = new EventGridEvent(await req.ReadAsStringAsync(), "IncomingRequest", "IncomingRequest", "1.0.0");
        await eventCollector.AddAsync(e);
        return new OkResult();
    }
}

如果您的主题使用CloudEvent模式,您可以输出CloudEvents。

public static class CloudEventBindingFunction
{
    [FunctionName("CloudEventBindingFunction")]
    public static async Task<IActionResult> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [EventGrid(TopicEndpointUri = "EventGridEndpoint", TopicKeySetting = "EventGridKey")] IAsyncCollector<CloudEvent> eventCollector)
    {
        CloudEvent e = new CloudEvent("IncomingRequest", "IncomingRequest", await req.ReadAsStringAsync());
        await eventCollector.AddAsync(e);
        return new OkResult();
    }
}

您还可以使用Azure Identity与输出绑定。为此,将Connection属性设置为包含您的Event Grid 主题endpoint的应用设置名称,以及一组可选的描述详细的身份信息(请在此处查看)。设置Connection属性时,不应设置TopicEndpointUriTopicKeySetting属性。

public static class CloudEventOutputBindingWithIdentityFunction
{
    [FunctionName("CloudEventOutputBindingWithIdentityFunction")]
    public static async Task<IActionResult> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [EventGrid(Connection = "MyConnection")] IAsyncCollector<CloudEvent> eventCollector)
    {
        CloudEvent e = new CloudEvent("IncomingRequest", "IncomingRequest", await req.ReadAsStringAsync());
        await eventCollector.AddAsync(e);
        return new OkResult();
    }
}

对于本地开发,请使用local.settings.json文件来存储连接信息

{
  "Values": {
    "myConnection__topicEndpointUri": "{topicEndpointUri}"
  }
}

部署时,请使用应用程序设置存储此信息。

您还可以输出一个字符串或JObject,并且扩展将尝试解析为正确的强类型事件。

使用事件网格触发的函数

您还可以创建一个函数,该函数将在事件被发送到您的主题时执行。根据您为Azure Function事件订阅选择的模式,您可以将绑定到EventGridEventCloudEvent

public static class EventGridEventTriggerFunction
{
    [FunctionName("EventGridEventTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] EventGridEvent e)
    {
        logger.LogInformation("Event received {type} {subject}", e.EventType, e.Subject);
    }
}

如果您的订阅配置有CloudEvent模式

public static class CloudEventTriggerFunction
{
    [FunctionName("CloudEventTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] CloudEvent e)
    {
        logger.LogInformation("Event received {type} {subject}", e.Type, e.Subject);
    }
}

您还可以将绑定到事件数组。如果您已启用事件网格订阅的批处理,这将很有用。

public static class EventGridEventBatchTriggerFunction
{
    [FunctionName("EventGridEventBatchTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] EventGridEvent[] events)
    {
        foreach (EventGridEvent eventGridEvent in events)
        {
            logger.LogInformation("Event received {type} {subject}", eventGridEvent.EventType, eventGridEvent.Subject);
        }
    }
}

对于配置有CloudEvent模式的订阅,类似地

public static class CloudEventBatchTriggerFunction
{
    [FunctionName("CloudEventBatchTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] CloudEvent[] events)
    {
        foreach (CloudEvent cloudEvent in events)
        {
            logger.LogInformation("Event received {type} {subject}", cloudEvent.Type, cloudEvent.Subject);
        }
    }
}

故障排除

请参阅监控Azure函数以获取故障排除指导。

后续步骤

阅读Azure函数简介创建Azure函数指南

贡献

请参阅我们的 CONTRIBUTING.md 了解如何构建、测试以及为该库贡献代码的详细信息。

本项目欢迎贡献和建议。大多数贡献需要您同意一份贡献者许可协议(CLA),声明您有权利并且实际上授予我们使用您贡献的权利。有关详细信息,请访问 cla.microsoft.com

本项目已采用 Microsoft 开源行为准则。要了解更多信息,请查看 行为准则常见问题解答 或通过 [email protected] 联系我们,提出任何额外的问题或意见。

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET 标准库 netstandard2.0 兼容。 netstandard2.1 已计算。
.NET 框架 net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET 标准 的信息。

NuGet 包 (3)

显示依赖于 Microsoft.Azure.WebJobs.Extensions.EventGrid 的前3个 NuGet 包

下载
Microsoft.Azure.Workflows.WebJobs.Extension

Azure Functions 中运行工作流的扩展

WVHT.Microservices.JobManagementService.Worker

作业管理工功能。

Reimaginate.DataHub.AzureFunctionAgentHost

软件包描述

GitHub 仓库 (5)

显示依赖于 Microsoft.Azure.WebJobs.Extensions.EventGrid 的前 5 个最受欢迎的 GitHub 仓库

仓库 星标
Azure-Samples/Serverless-microservices-reference-architecture
此参考架构通过实际操作指南,引导您了解设计、开发和服务端无服务器应用程序所涉及到的决策过程,该应用程序采用微服务架构。目标是通过配置和部署架构的所有组件的实际操作经验,提供实践动手经验,学会以连贯和统一的方式使用几个 Azure 服务及其技术,以建立基于无服务器的微服务架构。
microsoft/MCW-Serverless-architecture
MCW Serverless架构
microsoft/IgniteTheTour
Microsoft Ignite The Tour
MerrionComputing/EventsSourcing-on-Azure-Functions
一个库,演示将事件源作为 Azure Functions 的数据持久性机制
microsoft/ignite-learning-paths-training-mod
Microsoft Ignite 学习路径,培训材料:现代化 Web 应用和数据
版本 下载 最后更新
3.4.2 4,788 7/31/2024
3.4.1 63,013 4/17/2024
3.3.1 633,195 11/13/2023
3.3.0 567,540 6/15/2023
3.2.1 1,230,495 9/8/2022
3.2.0 1,059,459 4/21/2022
3.1.0 496,813 1/13/2022
3.0.1 145,259 12/14/2021
3.0.0 148,276 10/26/2021
3.0.0-beta.4 14,330 10/11/2021
3.0.0-beta.3 286,042 6/9/2021
3.0.0-beta.2 18,679 5/13/2021
3.0.0-beta.1 21,535 3/23/2021
2.1.0 3,384,462 10/19/2019
2.0.0 767,012 9/19/2018
2.0.0-rc1 1,553 9/14/2018
2.0.0-beta4 5,932 8/30/2018
2.0.0-beta3 976 8/30/2018
2.0.0-beta2 2,311 7/6/2018
2.0.0-beta1 6,527 3/30/2018
1.0.0 198,236 7/6/2018
1.0.0-beta4 51,076 4/4/2018
1.0.0-beta3 5,261 3/1/2018
1.0.0-beta2 4,779 9/25/2017
1.0.0-beta1-10006 982 8/16/2017
1.0.0-beta1 1,198 9/25/2017