Может ли один производитель Kafka создавать сообщения для нескольких тем и как?

Я просто изучаю Kafka, в настоящее время я использую одну тему producer и одну для создания сообщений, и она используется одним Consumer. очень просто.

Я читал страницу Kafka, new Producer API is thread-safe и совместное использование одного экземпляра улучшат производительность.

Означает ли это, что я могу использовать одного производителя для публикации сообщений в нескольких темах?


person Shankar    schedule 23.08.2016    source источник
comment
Да, см. документацию по адресу kafka.apache.org/documentation.html#producerapi.   -  person Michael G. Noll    schedule 23.08.2016
comment
@miguno Я почти ничего не вижу по вопросу в предоставленной ссылке. Только про зависимость :(   -  person Jacek Laskowski    schedule 24.08.2016
comment
В документах выше (короткий раздел) есть прямая ссылка на Документация по Java от KafkaProducer<K,V>, см. предложение. Примеры использования производителя приведены в javadocs.. На этой странице есть пример кода, показывающий, как можно определить целевую тему при отправке сообщение. Извините, если я был недостаточно ясен.   -  person Michael G. Noll    schedule 24.08.2016


Ответы (2)


Сам никогда не пробовал, но думаю можно. Так как код для производителя и отправки записи есть (отсюда 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) для записи в несколько тем.

person RadioLog    schedule 23.08.2016
comment
FWIW, последние документы Kafka для Producer API находятся по адресу kafka.apache.org/documentation.html# productrapi (ссылка выше относится к старой версии Kafka 0.8.1. - person Michael G. Noll; 23.08.2016
comment
Где именно в разделе productrapi говорится о методе? - person Jacek Laskowski; 24.08.2016
comment
В разделе productrapi говорится: Примеры использования производителя приведены в javadocs.. На этой странице есть пример кода, показывающий, как можно определить целевую тему при отправке сообщения. - person Michael G. Noll; 24.08.2016
comment
Дело в том, что это замедляет процесс написания продюсером. Кто-нибудь проверял производительность продюсера, который пишет на несколько тем? - person Novemberland; 19.03.2019
comment
@RadioLog, так можем ли мы создавать сообщения для нескольких тем, имеющих разные jaas.conf (keytab и pricipal)? Пожалуйста, смотрите мои вопросы здесь: stackoverflow.com/q/58313628/948268 - person Kuldeep Jain; 11.10.2019

Если я правильно вас понимаю, вы больше хотите использовать один и тот же экземпляр производителя для отправки одних и тех же/нескольких сообщений по нескольким темам.

Не уверен насчет java, но здесь вы можете сделать это на C# (.NET), используя Kafka . NET-клиент DependentProducerBuilder

   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));
        }
person Ajay    schedule 13.01.2020