[英]Kafka: Can a single producer produce 2 different records to 2 different topics?
[英]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.