public MessagePublisher(KafkaConfiguration kafkaConfiguration, KafkaProducerConfiguration producerConfig, string topic, IMessageSerializer serializer, Func <TMessage, Dictionary <string, string> > propertyProvider) { _kafkaConfiguration = kafkaConfiguration; _topic = topic; _serializer = serializer; _propertyProvider = propertyProvider; _producerConfig = producerConfig; }
public MessagePublisher(KafkaConfiguration kafkaConfiguration, KafkaProducerConfiguration producerConfig, string topic, IMessageSerializer serializer, Func <TMessage, Dictionary <string, string> > propertyProvider) { _topic = topic; _serializer = serializer; _propertyProvider = propertyProvider; _producerConfig = new ProducerConfig { BootstrapServers = kafkaConfiguration.BootstrapServers, BatchNumMessages = producerConfig.BatchFlushSize }; }
private void InitializeKafka(KafkaProducerConfiguration kafkaConfiguration) { _producerConfig = new ProducerConfig { BootstrapServers = string.IsNullOrEmpty(kafkaConfiguration.BootstrapServerUrls) ? throw new InvalidOperationException( $"{nameof(KafkaProducerConfiguration)} bootstrap server urls cannot be null or empty.") : kafkaConfiguration.BootstrapServerUrls, }; _schemaRegistryConfig = new SchemaRegistryConfig { Url = string.IsNullOrEmpty(kafkaConfiguration.AvroSchemaRegistryUrls) ? throw new InvalidOperationException( $"{nameof(KafkaProducerConfiguration)} schema registry urls cannot be null or empty.") : kafkaConfiguration.AvroSchemaRegistryUrls }; }
public TestMessageSendAndReceive() { // Steps to run local kafka broker: // - Install: Docker for Windows / Docker Desktop // - Clone: https://github.com/wurstmeister/kafka-docker // - Edit: docker-compose-single-broker.yml // - Change: KAFKA_ADVERTISED_HOST_NAME: localhost // - Run: docker-compose -f "docker-compose-single-broker.yml" up -d --build var cfg = new KafkaConfiguration("localhost:9092"); var sourceConfig = new KafkaSourceConfiguration(); var producerConfig = new KafkaProducerConfiguration(); const string topicName = "test-topic-3"; _deserializer = new JsonMessageDeserializer <TestMessage>(); _serializer = new JsonMessageSerializer(); bool PropertyFilter(Dictionary <string, string> d) => true; Dictionary <string, string> PropertyProvider(ITestMessage message) => new Dictionary <string, string>(); _source = new MessageSource <ITestMessage>(cfg, sourceConfig, topicName, new[] { _deserializer }, PropertyFilter); _publisher = new MessagePublisher <ITestMessage>(cfg, producerConfig, topicName, _serializer, PropertyProvider); }
public KafkaProducerFactory(KafkaProducerConfiguration configuration) { _configuration = configuration; }