Microsoft.Azure.WebJobs.Extensions.EventHubs 6.3.5

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

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

Azure WebJobs Event Hubs .NET客户端库

此扩展提供从Azure Function访问Azure Event Hubs的功能。

入门

安装包

使用NuGet安装Event Hubs扩展

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

先决条件

  • Azure订阅: 要使用Azure服务,包括Azure Event Hubs,您需要一个订阅。如果您没有现有的Azure帐户,您可以在免费试用中注册或创建帐户时使用您的Visual Studio订阅福利。

  • 包含事件中心的事件中心命名空间:要与 Azure 事件中心交互,您还需要一个命名空间和事件中心。如果您不熟悉创建 Azure 资源,您可能想遵循使用 Azure 门户创建事件中心的逐步指南。在那里,您还可以找到使用 Azure CLI、Azure PowerShell 或 Azure 资源管理器(ARM)模板创建事件中心的详细说明。

  • 具有blob存储的 Azure 存储帐户:为了将检查点作为 Azure 存储中的 blob 持久化,您需要一个具有 blob 的 Azure 存储帐户。如果您不熟悉 Azure 存储帐户,您可能想遵循使用 Azure 门户创建存储帐户的逐步指南。在那里,您还可以找到使用 Azure CLI、Azure PowerShell 或 Azure 资源管理器(ARM)模板创建存储帐户的详细说明。

Deploy button

验证客户端

为了使事件中心客户端库能够与事件中心交互,它需要了解如何连接并授权。这样做最简单的方式是使用连接字符串,该字符串在创建事件中心命名空间时自动创建。如果您不熟悉使用事件中心中的连接字符串,您可能想遵循获取事件中心连接字符串的逐步指南。

EventHubAttributeEventHubTriggerAttributeConnection 属性用于指定存储连接字符串的配置属性。

使用 AzureWebJobsStorage 连接字符串来保留处理检查点信息。

对于本地开发,使用 local.settings.json 文件来存储连接字符串。

{
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "<connection_name>": "Endpoint=sb://<event_hubs_namespace>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=Jya7Eh76HU92ibsxuk1ITN8CM8Bt76YLKf5ISjU3jZ8="
  }
}

当部署时,请使用应用程序设置来设置连接字符串。

基于身份的认证

如果您的环境启用了托管身份,则可以将其用于验证事件中心扩展。在这样做之前,您需要确保权限已按Azure Functions 开发者指南中描述的方式配置。

要使用基于身份的认证,请提供 <连接名称>__fullyQualifiedNamespace 配置设置。

{
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "<connection_name>__fullyQualifiedNamespace": "{event_hubs_namespace}.servicebus.windows.net"
  }
}

或对于已部署的应用程序,请在该设置中应用程序设置中设置相同的设置。

<connection_name>__fullyQualifiedNamespace={event_hubs_namespace}.servicebus.windows.net

有关配置基于身份连接的更多详细信息,请参阅此处

关键概念

事件中心触发器

事件中心触发器允许当消息被发送到事件中心时,执行一个函数。

请遵循Azure Event Hubs 触发教程来了解更多关于事件中心触发器的信息。

事件中心输出绑定

事件中心输出绑定允许函数发送事件中心事件。

请遵循Azure Event Hubs 输出绑定来了解更多关于事件中心绑定的信息。

支持的类型

以下类型支持触发器和输出绑定

  • EventData
  • string - 值将使用 UTF8 编码进行编码
  • BinaryData
  • byte[]
  • 自定义模型类型将使用 Newtonsoft.Json 进行 JSON 序列化
  • IAsyncCollector<T> 适用于以下任一类型的批量触发器
  • EventHubProducerClient 用于输出绑定

示例

发送单个事件

您可以通过在函数的返回值上应用 EventHubAttribute 来将单个事件发送到事件中心。返回值可以是 stringEventData 类型。使用返回值时可能未指定分区键;要这样做,您需要绑定到 IAsyncCollector<EventData>,如发送多个事件中所示。

[FunctionName("BindingToReturnValue")]
[return: EventHub("<event_hub_name>", Connection = "<connection_name>")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer)
{
    // This value would get stored in EventHub event body.
    // The string would be UTF8 encoded
    return $"C# Timer trigger function executed at: {DateTime.Now}";
}

发送多个事件

要从单个 Azure Function 调用发送多个事件,您可以对 IAsyncCollector<string>IAsyncCollector<EventData> 参数应用 EventHubAttribute。仅当绑定到 IAsyncCollector<EventData> 时才能使用分区键。

[FunctionName("BindingToCollector")]
public static async Task Run(
    [TimerTrigger("0 */5 * * * *")] TimerInfo myTimer,
    [EventHub("<event_hub_name>", Connection = "<connection_name>")] IAsyncCollector<EventData> collector)
{
    // When no partition key is used, partitions will be assigned per-batch via round-robin.
    await collector.AddAsync(new EventData($"Event 1 added at: {DateTime.Now}"));
    await collector.AddAsync(new EventData($"Event 2 added at: {DateTime.Now}"));

    // Using a partition key will help group events together; events with the same key
    // will always be assigned to the same partition.
    await collector.AddAsync(new EventData($"Event 3 added at: {DateTime.Now}"), "sample-key");
    await collector.AddAsync(new EventData($"Event 4 added at: {DateTime.Now}"), "sample-key");
}

使用强类型模型绑定

要使用与 EventHub 绑定的强类型模型类,请将 EventHubAttribute 应用到模型参数上。

[FunctionName("TriggerSingleModel")]
public static void Run(
    [EventHubTrigger("<event_hub_name>", Connection = "<connection_name>")] Dog dog,
    ILogger logger)
{
    logger.LogInformation($"Who's a good dog? {dog.Name} is!");
}

使用 EventHubProducerClient 发送多个事件

您还可以直接绑定到 EventHubProducerClient 以实现发送事件的最大控制。

[FunctionName("BindingToProducerClient")]
public static async Task Run(
    [TimerTrigger("0 */5 * * * *")] TimerInfo myTimer,
    [EventHub("<event_hub_name>", Connection = "<connection_name>")] EventHubProducerClient eventHubProducerClient)
{
    // IAsyncCollector allows sending multiple events in a single function invocation
    await eventHubProducerClient.SendAsync(new[]
    {
        new EventData($"Event 1 added at: {DateTime.Now}"),
        new EventData($"Event 2 added at: {DateTime.Now}")
    });
}

事件级别的触发器

要将函数应用于每次向事件中心发送事件,请将 EventHubTriggerAttribute 应用到 stringEventData 参数。

[FunctionName("TriggerSingle")]
public static void Run(
    [EventHubTrigger("<event_hub_name>", Connection = "<connection_name>")] string eventBodyAsString,
    ILogger logger)
{
    logger.LogInformation($"C# function triggered to process a message: {eventBodyAsString}");
}

批量触发器

要为接收到的事件批量运行函数,请将 EventHubTriggerAttribute 应用到 string[]EventData[] 参数。

[FunctionName("TriggerBatch")]
public static void Run(
    [EventHubTrigger("<event_hub_name>", Connection = "<connection_name>")] EventData[] events,
    ILogger logger)
{
    foreach (var e in events)
    {
        logger.LogInformation($"C# function triggered to process a message: {e.EventBody}");
        logger.LogInformation($"EnqueuedTime={e.EnqueuedTime}");
    }
}

故障排除

请参阅监控 Azure Functions 获取故障排除指南。

下一步

阅读Azure Functions 简介创建 Azure Function 指南

贡献

有关构建、测试和向此库贡献的详细信息,请参阅CONTRIBUTING.md

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

本项目采用了Microsoft Open Source Code of Conduct。有关更多信息,请参阅行为准则常见问题解答或联系[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 Standard netstandard2.0 兼容。 netstandard2.1 已计算。
NET Framework 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 Standard 的信息。

NuGet 包 (6)

显示依赖于 Microsoft.Azure.WebJobs.Extensions.EventHubs 的前 5 个 NuGet 包

下载
MassTransit.WebJobs.EventHubs

MassTransit Azure WebJobs Event Hubs 支持;MassTransit 为创建分布式应用提供了一个面向开发人员、现代化的平台,无需复杂性。

Microsoft.Azure.Workflows.WebJobs.Extension

Azure Functions 中运行工作流的扩展

红快

包描述

Amido.Stacks.Messaging.Azure.EventHub

包描述

Beef.Events.EventHubs

业务实体执行框架(Beef)事件中心框架。

GitHub 仓库 (11)

显示依赖Microsoft.Azure.WebJobs.Extensions.EventHubs的GitHub最受欢迎的前5个存储库

存储库 星标数
MassTransit/MassTransit
.NET分布式应用程序框架
mspnp/cloud-design-patterns
Azure架构中心中找到的云设计模式的样本实现。
Azure/azure-webjobs-sdk
Azure WebJobs SDK
Azure-Samples/saga-orchestration-serverless
基于协调的 Saga 实现参考,在无服务器架构中。
JamesRandall/FunctionMonkey
使用更少的样板代码、更多的一致性和对 REST API 的支持来编写更优雅的 Azure Functions。文档可在 https://functionmonkey.azurefromthetrenches.com 查找。
版本 下载 最后更新
6.3.5 3,121 8/2/2024
6.3.4 1,483 7/25/2024
6.3.3 22,832 6/13/2024
6.3.2 126,152 4/29/2024
6.3.1 12,254 4/17/2024
6.3.0 9,518 4/10/2024
6.2.0 150,131 3/5/2024
6.1.0 24,639 2/14/2024
6.0.2 265,296 11/13/2023
6.0.1 227,244 10/11/2023
6.0.0 61,920 9/12/2023
5.5.0 186,181 8/14/2023
5.4.0 362,235 6/6/2023
5.3.0 286,504 4/11/2023
5.2.0 168,927 2/23/2023
5.1.2 944,251 8/10/2022
5.1.1 778,477 6/21/2022
5.1.0 425,793 4/21/2022
5.0.1 205,352 3/9/2022
5.0.0 745,049 10/26/2021
5.0.0-beta.7 69,306 7/9/2021
5.0.0-beta.6 44,290 6/9/2021
5.0.0-beta.5 18,986 5/18/2021
5.0.0-beta.4 17,689 4/6/2021
5.0.0-beta.3 17,500 3/11/2021
5.0.0-beta.2 18,555 3/9/2021
5.0.0-beta.1 22,341 2/10/2021
4.3.1 310,760 2/15/2022
4.3.0 480,633 10/26/2021
4.2.0 860,476 12/11/2020
4.1.1 1,350,483 2/5/2020
4.1.0 183,077 10/31/2019
4.0.1 417,712 10/1/2019
4.0.0 143,761 9/19/2019
4.0.0-beta2 964 8/5/2019
4.0.0-beta1 11,394 5/14/2019
3.0.6 300,929 7/23/2019
3.0.5 223,439 5/3/2019
3.0.4 67,346 3/29/2019
3.0.3 245,897 3/7/2019
3.0.2 50,045 1/25/2019
3.0.1 124,307 10/17/2018
3.0.0 139,185 9/19/2018
3.0.0-rc1 2,879 9/14/2018
3.0.0-beta8 8,568 8/30/2018
3.0.0-beta5 15,060 3/26/2018
3.0.0-beta4 5,251 11/28/2017
3.0.0-beta3 1,460 9/15/2017