User Story
As a developer configuring the Kafka outbox transport, I want a KafkaTransportOptions class with configurable partition count, replication factor, topic auto-creation, and message retention, so that I can tune Kafka topic behavior without modifying transport internals.
Background
KafkaMediatorConfiguratorExtensions.UseKafkaTransport() accepts no options. KafkaMessageTransport creates topics with hard-coded DefaultPartitionCount = 1 and DefaultReplicationFactor = 1. All other Pulse transports (RabbitMqTransportOptions, AzureServiceBusTransportOptions, DaprMessageTransportOptions) provide a dedicated options class. Kafka is the sole exception.
Requirements
- Create
KafkaTransportOptions in NetEvolve.Pulse.Kafka:
public sealed class KafkaTransportOptions
{
public int DefaultPartitionCount { get; set; } = 1;
public short DefaultReplicationFactor { get; set; } = 1;
public bool AutoCreateTopics { get; set; } = true;
public TimeSpan? MessageRetention { get; set; }
}
- Update
KafkaMessageTransport to inject IOptions<KafkaTransportOptions> and use the configured values for topic creation.
- Extend
UseKafkaTransport() with Action<KafkaTransportOptions>? configureOptions = null parameter and register options accordingly.
Acceptance Criteria
Out of Scope
- Per-topic options overrides.
- Consumer group configuration.
User Story
As a developer configuring the Kafka outbox transport, I want a
KafkaTransportOptionsclass with configurable partition count, replication factor, topic auto-creation, and message retention, so that I can tune Kafka topic behavior without modifying transport internals.Background
KafkaMediatorConfiguratorExtensions.UseKafkaTransport()accepts no options.KafkaMessageTransportcreates topics with hard-codedDefaultPartitionCount = 1andDefaultReplicationFactor = 1. All other Pulse transports (RabbitMqTransportOptions,AzureServiceBusTransportOptions,DaprMessageTransportOptions) provide a dedicated options class. Kafka is the sole exception.Requirements
KafkaTransportOptionsinNetEvolve.Pulse.Kafka:KafkaMessageTransportto injectIOptions<KafkaTransportOptions>and use the configured values for topic creation.UseKafkaTransport()withAction<KafkaTransportOptions>? configureOptions = nullparameter and register options accordingly.Acceptance Criteria
KafkaTransportOptionsproperties have documented defaults matching the current hard-coded values.KafkaMessageTransportusesoptions.DefaultPartitionCountandoptions.DefaultReplicationFactorfor topic creation.AutoCreateTopics = false, topic creation is skipped.MessageRetentionis applied to the topic config when set.UseKafkaTransport()without a configure delegate behaves identically to the current implementation.AutoCreateTopics = false, custom retention.Out of Scope