public KafkaMessageProducerFactory( KafkaMessagingGatewayConfiguration globalConfiguration, KafkaPublication publication) { _globalConfiguration = globalConfiguration; _publication = publication; _configHook = null; }
public KafkaMessageProducer( KafkaMessagingGatewayConfiguration configuration, KafkaPublication publication) { if (string.IsNullOrEmpty(publication.Topic)) { throw new ConfigurationException("Topic is required for a publication"); } _clientConfig = new ClientConfig { Acks = (Confluent.Kafka.Acks)((int)publication.Replication), BootstrapServers = string.Join(",", configuration.BootStrapServers), ClientId = configuration.Name, Debug = configuration.Debug, SaslMechanism = configuration.SaslMechanisms.HasValue ? (Confluent.Kafka.SaslMechanism?)((int)configuration.SaslMechanisms.Value) : null, SaslKerberosPrincipal = configuration.SaslKerberosPrincipal, SaslUsername = configuration.SaslUsername, SaslPassword = configuration.SaslPassword, SecurityProtocol = configuration.SecurityProtocol.HasValue ? (Confluent.Kafka.SecurityProtocol?)((int)configuration.SecurityProtocol.Value) : null, SslCaLocation = configuration.SslCaLocation, SslKeyLocation = configuration.SslKeystoreLocation, }; _producerConfig = new ProducerConfig(_clientConfig) { BatchNumMessages = publication.BatchNumberMessages, EnableIdempotence = publication.EnableIdempotence, MaxInFlight = publication.MaxInFlightRequestsPerConnection, LingerMs = publication.LingerMs, MessageTimeoutMs = publication.MessageTimeoutMs, MessageSendMaxRetries = publication.MessageSendMaxRetries, Partitioner = (Confluent.Kafka.Partitioner)((int)publication.Partitioner), QueueBufferingMaxMessages = publication.QueueBufferingMaxMessages, QueueBufferingMaxKbytes = publication.QueueBufferingMaxKbytes, RequestTimeoutMs = publication.RequestTimeoutMs, RetryBackoffMs = publication.RetryBackoff, TransactionalId = publication.TransactionalId, }; MakeChannels = publication.MakeChannels; Topic = publication.Topic; NumPartitions = publication.NumPartitions; ReplicationFactor = publication.ReplicationFactor; TopicFindTimeoutMs = publication.TopicFindTimeoutMs; MaxOutStandingMessages = publication.MaxOutStandingMessages; MaxOutStandingCheckIntervalMilliSeconds = publication.MaxOutStandingCheckIntervalMilliSeconds; }
public KafkaMessageProducer( KafkaMessagingGatewayConfiguration globalConfiguration, KafkaPublication publication) { _producerConfig = new ProducerConfig { BootstrapServers = string.Join(",", globalConfiguration.BootStrapServers), ClientId = globalConfiguration.Name, MaxInFlight = globalConfiguration.MaxInFlightRequestsPerConnection, QueueBufferingMaxMessages = publication.QueueBufferingMaxMessages, Acks = publication.Acks, QueueBufferingMaxKbytes = publication.QueueBufferingMaxKbytes, MessageSendMaxRetries = publication.MessageSendMaxRetries, BatchNumMessages = publication.BatchNumberMessages, LingerMs = publication.QueueBufferingMax, RequestTimeoutMs = publication.RequestTimeout, MessageTimeoutMs = publication.MessageTimeout, RetryBackoffMs = publication.RetryBackoff }; _producer = new ProducerBuilder <Null, string>(_producerConfig).Build(); _publisher = new KafkaMessagePublisher(_producer); }