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
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventGrid" Version="3.4.2" />
paket add Microsoft.Azure.WebJobs.Extensions.EventGrid --version 3.4.2
#r "nuget: Microsoft.Azure.WebJobs.Extensions.EventGrid, 3.4.2"
// 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
属性时,不应设置TopicEndpointUri
和TopicKeySetting
属性。
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事件订阅选择的模式,您可以将绑定到EventGridEvent
或CloudEvent
。
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函数以获取故障排除指导。
后续步骤
贡献
请参阅我们的 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 已计算。 |
-
.NETStandard 2.0
- Azure.Messaging.EventGrid (>= 4.21.0)
- Microsoft.Azure.WebJobs (>= 3.0.37)
- Microsoft.Extensions.Azure (>= 1.7.4)
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 |