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
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="6.3.5" />
paket add Microsoft.Azure.WebJobs.Extensions.EventHubs --version 6.3.5
#r "nuget: Microsoft.Azure.WebJobs.Extensions.EventHubs, 6.3.5"
// 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)模板创建存储帐户的详细说明。
验证客户端
为了使事件中心客户端库能够与事件中心交互,它需要了解如何连接并授权。这样做最简单的方式是使用连接字符串,该字符串在创建事件中心命名空间时自动创建。如果您不熟悉使用事件中心中的连接字符串,您可能想遵循获取事件中心连接字符串的逐步指南。
EventHubAttribute
和 EventHubTriggerAttribute
的 Connection
属性用于指定存储连接字符串的配置属性。
使用 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
来将单个事件发送到事件中心。返回值可以是 string
或 EventData
类型。使用返回值时可能未指定分区键;要这样做,您需要绑定到 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
应用到 string
或 EventData
参数。
[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 已计算。 |
-
.NETStandard 2.0
- Azure.Messaging.EventHubs (≥ 5.11.5)
- Azure.Storage.Blobs (≥ 12.21.1)
- Microsoft.Azure.WebJobs (≥ 3.0.37)
- Microsoft.Extensions.Azure (≥ 1.7.4)
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 |