public KafkaMessageProducerFactory(
     KafkaMessagingGatewayConfiguration globalConfiguration,
     KafkaPublication publication)
 {
     _globalConfiguration = globalConfiguration;
     _publication         = publication;
     _configHook          = null;
 }
Exemple #2
0
        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;
        }
Exemple #3
0
        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);
        }