Itmo.Dev.Platform.Kafka 1.1.82

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.1.82                
NuGet\Install-Package Itmo.Dev.Platform.Kafka -Version 1.1.82                
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.1.82" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Itmo.Dev.Platform.Kafka --version 1.1.82                
#r "nuget: Itmo.Dev.Platform.Kafka, 1.1.82"                
#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.
// Install Itmo.Dev.Platform.Kafka as a Cake Addin
#addin nuget:?package=Itmo.Dev.Platform.Kafka&version=1.1.82

// Install Itmo.Dev.Platform.Kafka as a Cake Tool
#tool nuget:?package=Itmo.Dev.Platform.Kafka&version=1.1.82                

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. 
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.261 0 2/16/2025
2.3.255 47 2/6/2025
2.3.251 77 2/3/2025
2.3.247 310 12/24/2024
2.3.237 152 11/30/2024
2.2.234 155 11/18/2024
2.2.232 88 11/18/2024
2.2.228 86 10/31/2024
2.2.206 170 10/30/2024
2.2.204 113 10/29/2024
2.2.202 84 10/29/2024
2.1.196 81 10/29/2024
2.1.193 92 10/29/2024
2.1.190 96 10/26/2024
2.0.174 88 10/25/2024
2.0.133 82 10/25/2024
2.0.132 85 10/24/2024
2.0.131 130 10/24/2024
2.0.130 83 10/24/2024
2.0.129 88 10/24/2024
2.0.128 93 10/24/2024
2.0.127 90 10/23/2024
2.0.126 94 10/11/2024
2.0.125 89 10/11/2024
2.0.124 85 10/11/2024
2.0.123 85 10/11/2024
2.0.122 90 10/11/2024
2.0.121 90 10/11/2024
2.0.120 94 10/11/2024
2.0.119 91 10/11/2024
2.0.118 102 10/11/2024
2.0.117 90 10/10/2024
2.0.115 94 10/10/2024
2.0.113 88 10/6/2024
2.0.112 138 8/22/2024
2.0.111 150 5/14/2024
2.0.110 119 5/13/2024
2.0.109 114 5/13/2024
2.0.108 137 5/6/2024
2.0.107 118 5/6/2024
2.0.106 117 5/6/2024
2.0.105 119 5/4/2024
2.0.102 128 5/4/2024
2.0.101 115 4/26/2024
2.0.100 131 4/22/2024
2.0.99 114 4/21/2024
2.0.98 117 4/21/2024
2.0.97 109 4/19/2024
2.0.96 112 4/18/2024
2.0.95 109 4/18/2024
2.0.94 135 2/13/2024
2.0.93 132 2/10/2024
2.0.91 109 2/10/2024
2.0.90 124 2/10/2024
2.0.89 263 2/3/2024
2.0.86 110 2/1/2024
1.1.85 116 1/30/2024
1.1.83 159 1/27/2024
1.1.82 199 1/5/2024
1.1.81 287 1/3/2024
1.0.80 149 12/30/2023
1.0.79 129 12/30/2023
1.0.78 132 12/30/2023
1.0.77 142 12/28/2023
1.0.76 129 12/27/2023
1.0.75 167 12/9/2023
1.0.73 167 11/30/2023
1.0.72 147 11/27/2023
1.0.71 146 11/27/2023
1.0.70 135 11/27/2023
1.0.69 119 11/27/2023
1.0.67 149 11/25/2023
1.0.66 136 11/25/2023
1.0.65 142 11/23/2023
1.0.64 130 11/23/2023
1.0.62 134 11/18/2023
1.0.61 138 11/18/2023
1.0.60 127 11/17/2023
1.0.59 129 11/16/2023
1.0.58 125 11/13/2023
1.0.57 114 11/12/2023
1.0.56 127 11/12/2023
1.0.54 132 11/7/2023
1.0.53 132 11/4/2023
1.0.52 159 10/29/2023
1.0.51 142 10/29/2023
1.0.50 150 10/29/2023
1.0.48 137 10/29/2023

Added ssl/sasl configuration