protected AbstractKafkaClient(KafkaSinkOptions options)
        {
            Contract.Requires<ArgumentNullException>(options != null);

            this.options = options;
            this.producerConfiguration = new ProducerConfiguration(options.Topic);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="KafkaSink"/> class.
        /// </summary>
        /// <param name="kafkaClient">
        /// The kafka Client.
        /// </param>
        /// <param name="options">
        /// The configuration options.
        /// </param>
        public KafkaSink(AbstractKafkaClient kafkaClient, KafkaSinkOptions options)
            : base(options.BatchPostingLimit, options.Period)
        {
            Contract.Requires<ArgumentNullException>(options != null);
            Contract.Requires<ArgumentNullException>(kafkaClient != null);

            this.kafkaClient = kafkaClient;
            this.jsonFormatter = new JsonFormatter(renderMessage: options.RenderSerilogMessage);
        }
        public static LoggerConfiguration Kafka(
            this LoggerSinkConfiguration loggerConfiguration,
            KafkaSinkOptions options)
        {
            Contract.Requires(loggerConfiguration != null);
            Contract.Requires(options != null);
            Contract.Ensures(Contract.Result<LoggerConfiguration>() != null);

            var kafkaClient = new KafkaClient(options);
            var kafkaSink = new KafkaSink(kafkaClient, options);
            var result = loggerConfiguration.Sink(kafkaSink);
            Contract.Assume(result != null);
            return result;
        }
        public static LoggerConfiguration Kafka(
            this LoggerSinkConfiguration loggerConfiguration,
            KafkaSinkOptions options)
        {
            Contract.Requires(loggerConfiguration != null);
            Contract.Requires(options != null);
            Contract.Ensures(Contract.Result <LoggerConfiguration>() != null);

            var kafkaClient = new KafkaClient(options);
            var kafkaSink   = new KafkaSink(kafkaClient, options);
            var result      = loggerConfiguration.Sink(kafkaSink);

            Contract.Assume(result != null);
            return(result);
        }
        public void CanSendEmptyMessageBatch()
        {
            // Given
            var options = new KafkaSinkOptions("topic", new[] { new Uri("http://sample") });
            var kafkaClient = new KafkaClient(options);
            var systemUnderTest = new KafkaSink(kafkaClient, options);
            var logEvents = new LogEvent[0];
            
            // When 
            var result = systemUnderTest.EmitBatchInternalAsync(logEvents);

            // Then
            Assert.IsTrue(result.IsCompleted);
            Assert.IsFalse(result.IsFaulted);
        }
Beispiel #6
0
        public void CanSendEmptyMessageBatch()
        {
            // Given
            var options         = new KafkaSinkOptions("topic", new[] { new Uri("http://sample") });
            var kafkaClient     = new KafkaClient(options);
            var systemUnderTest = new KafkaSink(kafkaClient, options);
            var logEvents       = new LogEvent[0];

            // When
            var result = systemUnderTest.EmitBatchInternalAsync(logEvents);

            // Then
            Assert.IsTrue(result.IsCompleted);
            Assert.IsFalse(result.IsFaulted);
        }
        public async Task KafkaClientConnectionTest()
        {
            // Given
            const string Topic = "test";
            var brokers = new[] { new Uri("localhost:9092") };
            var options = new KafkaSinkOptions(Topic, brokers);
            var kafkaClient = new KafkaClient(options);
            var message = new Message { Value = Encoding.UTF8.GetBytes("{'message' : 'This is a test message'}") };

            // When
            await kafkaClient.SendMessagesAsync(new[] { message }).ConfigureAwait(false);
            kafkaClient.Dispose();

            // Then
            Assert.IsTrue(true);
        }
Beispiel #8
0
        public async Task KafkaClientConnectionTest()
        {
            // Given
            const string Topic       = "test";
            var          brokers     = new[] { new Uri("localhost:9092") };
            var          options     = new KafkaSinkOptions(Topic, brokers);
            var          kafkaClient = new KafkaClient(options);
            var          message     = new Message {
                Value = Encoding.UTF8.GetBytes("{'message' : 'This is a test message'}")
            };

            // When
            await kafkaClient.SendMessagesAsync(new[] { message }).ConfigureAwait(false);

            kafkaClient.Dispose();

            // Then
            Assert.IsTrue(true);
        }
 internal KafkaClient(KafkaSinkOptions options)
     : base(options)
 {
     Contract.Requires<ArgumentNullException>(options != null);
 }