Confluent.Kafka.DependencyInjection
3.1.0
dotnet add package Confluent.Kafka.DependencyInjection --version 3.1.0
NuGet\Install-Package Confluent.Kafka.DependencyInjection -Version 3.1.0
<PackageReference Include="Confluent.Kafka.DependencyInjection" Version="3.1.0" />
paket add Confluent.Kafka.DependencyInjection --version 3.1.0
#r "nuget: Confluent.Kafka.DependencyInjection, 3.1.0"
// Install Confluent.Kafka.DependencyInjection as a Cake Addin #addin nuget:?package=Confluent.Kafka.DependencyInjection&version=3.1.0 // Install Confluent.Kafka.DependencyInjection as a Cake Tool #tool nuget:?package=Confluent.Kafka.DependencyInjection&version=3.1.0
Kafka Dependency Injection
An extension of Confluent's Kafka client for use with Microsoft.Extensions.DependencyInjection
(and friends).
Features
- Inject/resolve Kafka clients using the service container.
- Configure Kafka clients using the options pattern.
- Load client config properties using
Microsoft.Extensions.Configuration
. - Automatically log client events using
Microsoft.Extensions.Logging
.
Installation
Add the NuGet package to your project:
$ dotnet add package Confluent.Kafka.DependencyInjection
Usage
Resolving clients
Kafka DI works out-of-the-box after registering services with an IServiceCollection
.
services.AddKafkaClient();
services.AddSingleton<MyService>();
Inject Kafka clients via constructor.
public MyService(IProducer<string, byte[]> producer, IConsumer<Ignore, MyType> consumer, IAdminClient adminClient)
{
// Clients are singletons managed by the container.
Producer = producer;
Consumer = consumer;
AdminClient = adminClient;
}
Configuring clients
Client config properties are bound to the Kafka
section of .NET configuration providers, such as appsettings.json
.
{
"Kafka": {
"Producer": {
"bootstrap.servers": "localhost:9092",
"transactional.id": "example"
},
"Consumer": {
"bootstrap.servers": "localhost:9092",
"group.id": "example"
},
"Admin": {
"bootstrap.servers": "localhost:9092"
}
}
}
You can also leverage KafkaClientOptions
to customize clients further, including serialization and event handlers.
var builder = services.AddKafkaClient()
builder.Configure(
options =>
{
// Config properties apply to all clients with a matching type (consumers, in this case).
options.Configure(new ConsumerConfig { StatisticsIntervalMs = 5000 });
// Optionally, configure handlers for asynchronous client events.
options.OnStatistics((x, y) => Console.WriteLine(y));
});
// Optionally, configure serialization for specific types.
builder.Configure<JsonDeserializer<MyType>>((x, y) => x.Deserialize(y));
services.AddSingleton(typeof(JsonDeserializer<>));
// Configure schema registry (required by some serializers).
services.AddSingleton<ISchemaRegistryClient>(
x => new CachedSchemaRegistryClient(new SchemaRegistryConfig { Url = "localhost:8081" }));
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Confluent.Kafka (>= 2.2.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.1)
- Microsoft.Extensions.Options (>= 7.0.1)
-
net6.0
- Confluent.Kafka (>= 2.2.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.1)
- Microsoft.Extensions.Options (>= 7.0.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Confluent.Kafka.DependencyInjection:
Package | Downloads |
---|---|
DanielXOO.Serilog.Sinks.Kafka
Serilog sink for kafka |
|
SkillAssessor.Common.Logging
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.1.0 | 186,461 | 7/21/2023 |
3.0.2 | 199 | 7/21/2023 |
3.0.1 | 13,952 | 4/16/2023 |
3.0.0 | 59,667 | 3/28/2023 |
3.0.0-test3 | 177 | 3/27/2023 |
3.0.0-test2 | 602 | 3/21/2023 |
3.0.0-test | 177 | 3/10/2023 |
2.2.0 | 14,597 | 2/17/2023 |
2.1.2 | 6,999 | 2/2/2023 |
2.1.1 | 19,913 | 1/3/2023 |
2.1.0 | 25,378 | 11/3/2022 |
2.0.1 | 630 | 11/2/2022 |
2.0.1-test | 171 | 11/2/2022 |
2.0.0 | 112,198 | 6/21/2021 |
1.1.0 | 6,576 | 2/28/2021 |
1.0.0 | 769 | 1/8/2021 |
0.1.0 | 861 | 6/15/2020 |