Itmo.Dev.Platform.Kafka 1.0.70

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Itmo.Dev.Platform.Kafka --version 1.0.70
                    
NuGet\Install-Package Itmo.Dev.Platform.Kafka -Version 1.0.70
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Itmo.Dev.Platform.Kafka" Version="1.0.70" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Itmo.Dev.Platform.Kafka" Version="1.0.70" />
                    
Directory.Packages.props
<PackageReference Include="Itmo.Dev.Platform.Kafka" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Itmo.Dev.Platform.Kafka --version 1.0.70
                    
#r "nuget: Itmo.Dev.Platform.Kafka, 1.0.70"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Itmo.Dev.Platform.Kafka@1.0.70
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Itmo.Dev.Platform.Kafka&version=1.0.70
                    
Install as a Cake Addin
#tool nuget:?package=Itmo.Dev.Platform.Kafka&version=1.0.70
                    
Install as a Cake Tool

Itmo.Dev.Platform.Kafka

Platform extensions for working with Kafka

Consumer

Implement message handler

public class MyMessageHandler : IKafkaMessageHandler<int, string>
{
    public ValueTask HandleAsync(
        IEnumerable<ConsumerKafkaMessage<TKey, TValue>> messages, 
        CancellationToken cancellationToken)
    {
        foreach (var message in messages)
        {
            Console.WriteLine($"Received message, Key = {message.Key}, Value = {message.Value}");
        }
        
        return ValueTask.CompletedTask;
    }
}

Implement configuration type

public class Configuration : IKafkaConsumerConfiguration
{
    public bool IsDisabled { get; init; }

    public TimeSpan DisabledConsumerTimeout { get; init; }

    public string Host { get; set; } = string.Empty;

    public string Topic { get; init; } = string.Empty;

    public string Group { get; init; } = string.Empty;

    public int ParallelismDegree { get; init; }

    public int BufferSize { get; init; }

    public TimeSpan BufferWaitLimit { get; init; }

    public bool ReadLatest { get; init; }
}

At runtime, configuration would be received as IOptionsMonitor<TConfiguration>, so you should manually register it to DI container as options.

Add consumer to your ASP.NET server services

Consumer requires an ASP.NET host, as it is implemented as hosted service

Use extension methods to register your consumer.

collection.AddKafkaConsumer<int, string>(builder => builder
    .HandleWith<MyMessageHandler>()
    .DeserializeKeyWithNewtonsoft()
    .DeserializeValueWithNewtonsoft()
    .UseConfiguration<Configuration>());

If you want to use custom deserializer, you can call DeserializeKeyWith<T> where T : IDeserializer<T> method, same way with value deserialization.

If your topic model is defined as protobuf, you can call DeserializeKeyWithProto extension method, same way with value deserialization.

Producer

Add producer to your service collection

collection.AddKafkaProducer<int, string>(builder => builder
    .SerializeKeyWithNewtonsoft()
    .SerializeValueWithNewtonsoft()
    .UseConfiguration<Configuration>());

You can use protobuf serialization same way as it is with consumer.

Resolve producer instance from service provider

var producer = provider.GetRequiredService<IKafkaMessageProducer<int, string>>();
await producer.ProduceAsync(messages, default);
Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.3.294 166 5/28/2025
2.3.292 161 5/27/2025
2.3.290 181 5/27/2025
2.3.288 140 5/17/2025
2.3.282 223 5/11/2025
2.3.275 85 5/10/2025
2.3.271 96 5/10/2025
2.3.269 87 5/10/2025
2.3.261 198 2/16/2025
2.3.255 133 2/6/2025
2.3.251 147 2/3/2025
2.3.247 413 12/24/2024
2.3.237 193 11/30/2024
2.2.234 207 11/18/2024
2.2.232 122 11/18/2024
2.2.228 126 10/31/2024
2.2.206 206 10/30/2024
2.2.204 159 10/29/2024
2.2.202 126 10/29/2024
2.1.196 121 10/29/2024
2.1.193 142 10/29/2024
2.1.190 134 10/26/2024
2.0.174 128 10/25/2024
2.0.133 122 10/25/2024
2.0.132 118 10/24/2024
2.0.131 172 10/24/2024
2.0.130 129 10/24/2024
2.0.129 142 10/24/2024
2.0.128 126 10/24/2024
2.0.127 126 10/23/2024
2.0.126 132 10/11/2024
2.0.125 130 10/11/2024
2.0.124 122 10/11/2024
2.0.123 131 10/11/2024
2.0.122 129 10/11/2024
2.0.121 124 10/11/2024
2.0.120 139 10/11/2024
2.0.119 132 10/11/2024
2.0.118 152 10/11/2024
2.0.117 125 10/10/2024
2.0.115 133 10/10/2024
2.0.113 128 10/6/2024
2.0.112 178 8/22/2024
2.0.111 187 5/14/2024
2.0.110 163 5/13/2024
2.0.109 156 5/13/2024
2.0.108 181 5/6/2024
2.0.107 157 5/6/2024
2.0.106 148 5/6/2024
2.0.105 154 5/4/2024
2.0.102 162 5/4/2024
2.0.101 150 4/26/2024
2.0.100 168 4/22/2024
2.0.99 148 4/21/2024
2.0.98 159 4/21/2024
2.0.97 146 4/19/2024
2.0.96 151 4/18/2024
2.0.95 144 4/18/2024
2.0.94 177 2/13/2024
2.0.93 167 2/10/2024
2.0.91 150 2/10/2024
2.0.90 154 2/10/2024
2.0.89 299 2/3/2024
2.0.86 142 2/1/2024
1.1.85 155 1/30/2024
1.1.83 202 1/27/2024
1.1.82 241 1/5/2024
1.1.81 320 1/3/2024
1.0.80 183 12/30/2023
1.0.79 163 12/30/2023
1.0.78 164 12/30/2023
1.0.77 184 12/28/2023
1.0.76 170 12/27/2023
1.0.75 209 12/9/2023
1.0.73 190 11/30/2023
1.0.72 169 11/27/2023
1.0.71 177 11/27/2023
1.0.70 170 11/27/2023
1.0.69 143 11/27/2023
1.0.67 169 11/25/2023
1.0.66 152 11/25/2023
1.0.65 157 11/23/2023
1.0.64 148 11/23/2023
1.0.62 165 11/18/2023
1.0.61 169 11/18/2023
1.0.60 146 11/17/2023
1.0.59 149 11/16/2023
1.0.58 152 11/13/2023
1.0.57 138 11/12/2023
1.0.56 146 11/12/2023
1.0.54 166 11/7/2023
1.0.53 161 11/4/2023
1.0.52 184 10/29/2023
1.0.51 162 10/29/2023
1.0.50 178 10/29/2023
1.0.48 158 10/29/2023

Added options post configure