示例#1
0
        /// <summary>
        /// Initialize the producer => two stage construction to allow for a hook if needed
        /// </summary>
        public void Init()
        {
            _producer = new ProducerBuilder <string, string>(_producerConfig)
                        .SetErrorHandler((consumer, error) =>
            {
                s_logger.LogError($"Code: {error.Code}, Reason: {error.Reason}, Fatal: {error.IsFatal}");
                _hasFatalProducerError = error.IsFatal;
            })
                        .Build();
            _publisher = new KafkaMessagePublisher(_producer);

            EnsureTopic();
        }
示例#2
0
        public KafkaMessageProducer(KafkaMessagingGatewayConfiguration globalConfiguration,
                                    KafkaMessagingProducerConfiguration producerConfiguration)
        {
            _producerConfig = new ProducerConfig
            {
                BootstrapServers          = string.Join(",", globalConfiguration.BootStrapServers),
                ClientId                  = globalConfiguration.Name,
                MaxInFlight               = globalConfiguration.MaxInFlightRequestsPerConnection,
                QueueBufferingMaxMessages = producerConfiguration.QueueBufferingMaxMessages,
                Acks = producerConfiguration.Acks,
                QueueBufferingMaxKbytes = producerConfiguration.QueueBufferingMaxKbytes,
                MessageSendMaxRetries   = producerConfiguration.MessageSendMaxRetries,
                BatchNumMessages        = producerConfiguration.BatchNumberMessages,
                LingerMs         = producerConfiguration.QueueBufferingMax,
                RequestTimeoutMs = producerConfiguration.RequestTimeout,
                MessageTimeoutMs = producerConfiguration.MessageTimeout,
                RetryBackoffMs   = producerConfiguration.RetryBackoff
            };

            _producer  = new ProducerBuilder <Null, string>(_producerConfig).Build();
            _publisher = new KafkaMessagePublisher(_producer);
        }