Kafka Keyless Producer на Java

Я новичок в экосистеме kafka, и в моем случае я использую производителя Java, но мне не нужно отправлять ключ вместе со значением записи, которое сериализуется Avro. Есть ли способ создать Java Producer, который не будет отправлять ключи, или ключи являются обязательным требованием при отправке сообщений в Kafka?

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
3
0
1 058
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

ProducerRecord имеет несколько конструкторов, один из них не имеет значения для ключа, поэтому указывать его не нужно.

Пример:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

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

producer.close();

Спасибо за быстрый ответ, пытаюсь сделать это сегодня утром :) Похоже, я могу использовать ваш пример, в котором конструктор Producer Record используется без ключа.

Duncan Krebs 07.08.2018 18:47

Если я знаю, что не собираюсь использовать ключи при отправке сообщений, можно ли пропустить конфигурацию сериализатора ключей при создании производителя? Т.е. свойство «key.serializer». Кроме того, есть ли API, в котором мне не нужно указывать тип ключа (поскольку я не собираюсь его использовать)?

fml2 22.11.2019 18:49

Как сказал @gasparms, есть встроенные способы производства без отправки ключа. Большинство людей используют Kafka таким образом, поскольку они просто хотят иметь возможность отправлять поток сообщений без ключа. Использование ключей действительно требуется только в том случае, если вам нужен уплотнение журнала

Вот действительно хорошее объяснение - https://stackoverflow.com/a/29515696/236528

Спасибо. За помощь, я прочитал ответ, а также дал еще несколько комментариев.

Duncan Krebs 07.08.2018 18:47

Другие вопросы по теме