public IProducer <string, byte[]> CreateProducer(ClusterSettings clusterSettings, TopicProducerSettings topicProducerSettings) { if (topicProducerSettings == null) { throw new ArgumentNullException(nameof(topicProducerSettings)); } if (!topicProducerSettings.Enabled) { return(null); } var config = clusterSettings.ToClientConfig <ProducerConfig>(c => { c.Acks = (Acks?)topicProducerSettings.Acks; }); var builder = new ProducerBuilder <string, byte[]>(config) .SetKeySerializer(Utf8Serializer.Instance); if (CompressionHandlerFactory.ResolveCompressionHandler(topicProducerSettings.MessageCompressionType, out var compressionHandler)) { builder.SetValueSerializer(compressionHandler); } var producer = builder.Build(); this.producers.Add(producer); return(producer); }
public IConsumer <string, byte[]> CreateConsumer(ClusterSettings clusterSettings, TopicConsumerSettings topicConsumerSettings) { if (topicConsumerSettings == null) { throw new ArgumentNullException(nameof(topicConsumerSettings)); } if (!topicConsumerSettings.Enabled) { return(null); } var config = clusterSettings.ToClientConfig <ConsumerConfig>(c => { c.GroupId = topicConsumerSettings.GroupId; c.AutoOffsetReset = (AutoOffsetReset)topicConsumerSettings.AutoOffsetReset; c.EnableAutoCommit = false; }); var builder = new ConsumerBuilder <string, byte[]>(config) .SetLogHandler(this.OnLog) .SetErrorHandler(this.OnError) .SetStatisticsHandler(this.OnStatistics) .SetOffsetsCommittedHandler(this.OnCommitted) .SetPartitionsRevokedHandler((c, tpo) => this.OnPartitionsRevoked(c, tpo)) .SetPartitionsAssignedHandler((c, tpo) => this.OnPartitionsAssigned(c, tpo)) .SetKeyDeserializer(Utf8Serializer.Instance); if (CompressionHandlerFactory.ResolveCompressionHandler(topicConsumerSettings.MessageCompressionType, out var compressionHandler)) { builder.SetValueDeserializer(compressionHandler); } var consumer = builder.Build(); this.consumers.Add(consumer); return(consumer); }