LinKit.Messaging.Kafka 1.3.1

dotnet add package LinKit.Messaging.Kafka --version 1.3.1
                    
NuGet\Install-Package LinKit.Messaging.Kafka -Version 1.3.1
                    
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="LinKit.Messaging.Kafka" Version="1.3.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LinKit.Messaging.Kafka" Version="1.3.1" />
                    
Directory.Packages.props
<PackageReference Include="LinKit.Messaging.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 LinKit.Messaging.Kafka --version 1.3.1
                    
#r "nuget: LinKit.Messaging.Kafka, 1.3.1"
                    
#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 LinKit.Messaging.Kafka@1.3.1
                    
#: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=LinKit.Messaging.Kafka&version=1.3.1
                    
Install as a Cake Addin
#tool nuget:?package=LinKit.Messaging.Kafka&version=1.3.1
                    
Install as a Cake Tool

LinKit.Messaging.Kafka

NuGet Version NuGet Downloads

This package provides the Apache Kafka broker adapter for the messaging abstractions in LinKit.Core. Core source generation wires supported message declarations and consumers to this broker adapter.

Prerequisites

  • You must have LinKit.Core installed.
  • You need access to a running Kafka cluster.
  • This package depends on the native librdkafka library via Confluent.Kafka. Ensure it is compatible with your target deployment environment, especially for AOT scenarios.

The Confluent.Kafka dependency uses native librdkafka components. Validate the package/runtime assets for each deployment OS and architecture. Source generation in LinKit does not itself certify the native Kafka client as Native AOT compatible.

Installation

dotnet add package LinKit.Messaging.Kafka

How to Use

1. Configure appsettings.json

Add a configuration section for your Kafka connection. The default section name is "Kafka".

{
  "Kafka": {
    "BootstrapServers": "localhost:9092",
    "GroupId": "my-application-consumer-group"
  }
}

GroupId is required for consumer groups. MaxProcessingAttempts controls handler retries before publishing a failed record to <source-topic>.dlq; 0 retries indefinitely and can block progress on that partition. The destination topic must be provisioned/configured according to your Kafka cluster policy.

LinKit commits Kafka offsets only after the generated message handler completes successfully. Failed handler calls are sought back to the failed record and retried with a delay; this is at-least-once delivery, so handlers should be idempotent. EnableAutoCommit is retained for configuration compatibility, but LinKit disables broker auto-commit to avoid acknowledging unprocessed records.

Kafka uses MessageHeaderNames.PartitionKey as the record key when present; otherwise it uses the producer's routingKey. The Outbox publisher supplies the Outbox message ID by default to avoid putting every message for a topic on one partition. Set the partition-key header to a stable aggregate key when per-aggregate ordering is required.

For trimmed or Native AOT applications, define and register a System.Text.Json source-generated context containing every message type used by producers and consumers:

using System.Text.Json.Serialization;
using LinKit.Core.Messaging;

[JsonSerializable(typeof(OrderCreated))]
internal partial class AppMessageJsonContext : JsonSerializerContext;

LinKitMessageJson.AddContext(AppMessageJsonContext.Default);

Register the context before publishing or starting consumers. A reflection fallback may be available when dynamic code is enabled; do not rely on it in Native AOT.

2. Register Services in Program.cs

In your application's startup code (e.g., Program.cs for a Worker Service), use the AddLinKitKafka() extension method after registering the core LinKit services.

using LinKit.Core;
using LinKit.Messaging.Kafka;

var builder = Host.CreateApplicationBuilder(args);

// 1. Register core LinKit services. 
// This generates the IMessagePublisher and your consumer IHostedService(s).
builder.Services.AddLinKitCqrs();
builder.Services.AddLinKitMessaging(); 

// 2. Provide the Kafka implementation.
// This "plugs in" Kafka to the generated services.
builder.Services.AddLinKitKafka(builder.Configuration);

var host = builder.Build();
host.Run();

AddLinKitKafka registers the IBrokerProducer and IBrokerConnection implementations. Offset commits occur after successful handler completion; failures seek back and retry. Delivery is at-least-once, so consumers should be idempotent. Publishing to a DLQ and committing the source offset are not one atomic transaction; a crash can duplicate a DLQ record.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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 is compatible.  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 is compatible.  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
1.3.1 50 10/31/2026
1.3.0 48 10/30/2026
1.2.0 81 10/22/2026
1.1.0 84 10/20/2026
1.0.0 331 8/29/2025