コード例 #1
0
 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;
 }
コード例 #2
0
 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
     };
 }
コード例 #3
0
 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
     };
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 public KafkaProducerFactory(KafkaProducerConfiguration configuration)
 {
     _configuration = configuration;
 }