Эта статья представляет собой описание самого простого и примитивного клиента отправки сообщение на сервер Kafka с самой простой (дефолтной) конфигурацией.
Статья, нацелена на проверку работы Java Kafka Producer Example. Минимум объяснений, архитектуры и настроек необходимых для работы из коробки. Хотите более подробную информацию по Kafka — Вам сюда.
Пример проверен при следующих условиях:
- JDK не менее чем 1.8
- Kafka 2.6.0
- Дефолтные настройки Kafka и ZooKeeper
Полный список статей по теме тут.
Заходите в наш телеграмм канал — Enterprise Stack Helper! Делитесь опытом или задавайте вопросы, если что-то непонятно.
Репозитории с примерам из статей по способам аутентификаци и авторизации — https://github.com/BlockWit/kafka-security-examples.
Пример java Kafka prudecer example
Для запуска необходим установленный на локальной машине Kafka 2.6.0 с дефолтными настройками. Пример проверялся на данных настройках. Как правило, если Вы конфигурацию не меняли, то такие настройки уже есть и Вам не нужно их перезаписывать.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
broker.id=0 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/tmp/kafka-logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=localhost:2181 zookeeper.connection.timeout.ms=18000 group.initial.rebalance.delay.ms=0 |
Maven проект на Java
Сам проект есть на github — https://github.com/BlockWit/kafka-security-examples. Код самого примера тут https://github.com/BlockWit/kafka-security-examples/blob/master/src/main/java/com/blockwit/kafka/security/examples/cookbook/JavaKafkaProducerExample.java. Код независим от остальных примеров.
Как создать проект самостоятельно:
Создаем проект Maven
Добавляем в Maven зависимости:
1 2 3 4 5 6 7 8 9 10 11 12 |
<dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.12</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.30</version> </dependency> </dependencies> |
Добавляем в проект код клиента:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.blockwit.kafka.security.examples.cookbook; import org.apache.kafka.clients.producer.*; import org.apache.kafka.common.serialization.LongSerializer; import org.apache.kafka.common.serialization.StringSerializer; import java.util.Properties; import java.util.concurrent.ExecutionException; public class JavaKafkaProducerExample { public static void main(String[] args) throws ExecutionException, InterruptedException { String server = "localhost:9092"; String topicName = "test.topic"; final Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, server); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, LongSerializer.class.getName()); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); final Producer<Long, String> producer = new KafkaProducer<>(props); RecordMetadata recordMetadata = (RecordMetadata) producer.send(new ProducerRecord(topicName, "example message")).get(); if (recordMetadata.hasOffset()) System.out.println("Message sent successfully"); producer.close(); } } |
Запускаем сначала Kafka если она не запущена, а затем сам клиент и получаем в конце примерно следующее:
1 2 3 4 5 |
Message sent successfully [main] INFO org.apache.kafka.clients.producer.KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 9223372036854775807 ms. Disconnected from the target VM, address: '127.0.0.1:47559', transport: 'socket' Process finished with exit code 0 |
Строчка, означающая успешное выполнение:
1 |
Message sent successfully |
Что-то пошло нет так? Пишите в этот телеграмм канал — вместе разберемся.
Параметры Java Kafka producer example
Основных параметра Java Kafka Producer два:
- String server = «localhost:9092»; — адрес сервера Kafka. Предполагается, что настройки дефолтные. А значит, Kafka на локальной машине.
- String topicName = «test.topic»; — название топика куда пишет producer
Резюме
Это краткая статья, нацелена на проверку работы Java Kafka Producer Example. Минимум объяснений, архитектуры и настроек необходимых для работы из коробки. Хотите более подробную информацию по Kafka — Вам сюда.
Полный список статей по теме тут.
Заходите в наш телеграмм канал — Enterprise Stack Helper! Делитесь опытом или задавайте вопросы, если что-то непонятно.
Репозитории с примерам из статей по способам аутентификаци и авторизации — https://github.com/BlockWit/kafka-security-examples.