簡體   English   中英

單個 Kafka 生產者是否可以為多個主題生成消息以及如何生成消息?

[英]Can single Kafka producer produce messages to multiple topics and how?

我只是在探索Kafka ,目前我正在使用一個producer和一個主題來生產消息,它由一個Consumer 很簡單。

我正在閱讀 Kafka 頁面, new Producer API is thread-safe ,共享單個實例將提高性能。

這是否意味着我可以使用單個 Producer 將消息發布到多個主題?

從來沒有自己嘗試過,但我想你可以。 由於生產者和發送記錄的代碼是(從這里https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html ):

Producer<String, String> producer = new KafkaProducer<>(props);
 for(int i = 0; i < 100; i++)
     producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i)));

所以,我想,如果您只是在ProducerRecord編寫不同的主題,那應該是可能的。

此外,這里http://kafka.apache.org/081/documentation.html#producerapi它明確表示您可以使用方法send(List<KeyedMessage<K,V>> messages)寫入多個主題。

如果我理解正確,您會更喜歡使用相同的生產者實例來發送關於多個主題的相同/多條消息。

不確定 java,但在這里您可以使用Kafka .NET Client DependentProducerBuilder在 C#(.NET) 中進行

   using (var producer = new ProducerBuilder<string, string>(config).Build())
        using (var producer2 = new DependentProducerBuilder<Null, int>(producer.Handle).Build())
        {
            producer.ProduceAsync("first-topic", new Message<string, string> { Key = "my-key-value", Value = "my-value" });

            producer2.ProduceAsync("second-topic", new Message<Null, int> { Value = 42 });

            producer2.ProduceAsync("first-topic", new Message<Null, int> { Value = 107 });

            producer.Flush(TimeSpan.FromSeconds(10));
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM