Skip to main content

Configuration Sections

Customize the configuration section names used by KafkaBus.

Default Section Names

By default, KafkaBus reads from:

  • Producer: KafkaBus:DefaultProducerSettings
  • Consumer: KafkaBus:DefaultConsumerSettings
{
"KafkaBus": {
"DefaultProducerSettings": {
"BootstrapServers": "localhost:9092"
},
"DefaultConsumerSettings": {
"BootstrapServers": "localhost:9092"
}
}
}

Custom Section Names

Specify custom section names when registering services:

builder.Services.AddKafkaBusProducers(
builder.Configuration,
[typeof(Program).Assembly],
sectionName: "Messaging:KafkaProducer"
);

builder.Services.AddKafkaBusConsumers(
builder.Configuration,
[typeof(Program).Assembly],
sectionName: "Messaging:KafkaConsumer"
);

With matching configuration:

{
"Messaging": {
"KafkaProducer": {
"BootstrapServers": "kafka:9092",
"Acks": "All"
},
"KafkaConsumer": {
"BootstrapServers": "kafka:9092",
"AutoOffsetReset": "Earliest"
}
}
}

Multiple Kafka Clusters

Use different sections for different clusters:

// Main cluster
builder.Services.AddKafkaBusProducers(
builder.Configuration,
[typeof(Program).Assembly],
sectionName: "Kafka:MainCluster:Producer"
);

// Analytics cluster
builder.Services.AddKafkaBusProducers(
builder.Configuration,
[typeof(AnalyticsMessages).Assembly],
sectionName: "Kafka:AnalyticsCluster:Producer"
);
{
"Kafka": {
"MainCluster": {
"Producer": {
"BootstrapServers": "main-kafka:9092"
}
},
"AnalyticsCluster": {
"Producer": {
"BootstrapServers": "analytics-kafka:9092"
}
}
}
}

Environment-Specific Configuration

Combine with environment-specific files:

// appsettings.json (base)
{
"KafkaBus": {
"DefaultProducerSettings": {
"Acks": "All",
"EnableIdempotence": true
}
}
}

// appsettings.Development.json
{
"KafkaBus": {
"DefaultProducerSettings": {
"BootstrapServers": "localhost:9092"
}
}
}

// appsettings.Production.json
{
"KafkaBus": {
"DefaultProducerSettings": {
"BootstrapServers": "kafka-1:9092,kafka-2:9092,kafka-3:9092",
"SecurityProtocol": "SaslSsl",
"SaslMechanism": "Plain",
"SaslUsername": "${KAFKA_USERNAME}",
"SaslPassword": "${KAFKA_PASSWORD}"
}
}
}

Configuration Constants

KafkaBus provides default constants:

public static class KafkaConfigurationDefaults
{
public const string ProducerSectionName = "KafkaBus:DefaultProducerSettings";
public const string ConsumerSectionName = "KafkaBus:DefaultConsumerSettings";
}

Use these for consistency:

var producerConfig = configuration
.GetSection(KafkaConfigurationDefaults.ProducerSectionName)
.Get<ProducerConfig>();

Next Steps