private IProducer <string, string> GetProducer(string broker) { return(Producers.GetOrAdd($"{broker}", key => { var producerConfiguration = new ProducerConfig { BootstrapServers = broker, Acks = Acks.Leader, SocketNagleDisable = true }; return new ProducerBuilder <string, string>(producerConfiguration).Build(); })); }
// Metoda za slanje poruke odredjenog sadrzaja na topic koji se prosledjuje kao parametar metode public override void Publish(string messageContent, string topic) { try { // U okviru konfiguracije Producer-a dodaje se samo Endpoint koji je neophodno gadjati kako bi se // poruka prosledila Kafki ProducerConfig = new CKafka.ProducerConfig { BootstrapServers = KafkaEndpoint }; using (ProducerBuild = new CKafka.ProducerBuilder <string, string>(ProducerConfig).Build()) { // pozivom Produce metode navodi se da Producer posalje poruku sadrzaja koji je prosledjen // kroz parametre metode na definisani topic ProducerBuild.Produce(topic, new CKafka.Message <string, string> { Value = messageContent }); ProducerBuild.Flush(TimeSpan.FromSeconds(10)); } } catch (Exception ex) { throw new Exception("Failed to produce message!", ex); } }