Size: a a a

2020 November 08

EF

Eugene Freeman in pro.kafka
final Properties props = new Properties();
       props.setProperty(
               BOOTSTRAP_SERVERS_CONFIG,
               "localhost:9092,localhost:9093"
       );
       props.setProperty(
               KEY_SERIALIZER_CLASS_CONFIG,
               "org.apache.kafka.common.serialization.StringSerializer"
       );
       props.setProperty(
               CLIENT_ID_CONFIG,
               "events-producer"
       );
       props.setProperty(ACKS_CONFIG, "all");
       props.setProperty(RETRIES_CONFIG, "0");
       props.setProperty(
               VALUE_SERIALIZER_CLASS_CONFIG,
               "org.apache.kafka.common.serialization.StringSerializer"
       );

       final var gson = new GsonBuilder().create();
       try (final var producer = new KafkaProducer<String, String>(props)) {
           Runtime.getRuntime().addShutdownHook(new Thread(producer::close));
           int limit = 1000;
           for (int i = 0; i < limit; i++) {
               System.out.println(producer.send(
                       new ProducerRecord<>(
                               "events",
                               gson.toJson(new Event())
                       )
               ).get());
           }
       } catch (InterruptedException | ExecutionException e) {
           e.printStackTrace();
       }


всем салют! такой вопрос, что может послушить причиной того, что produce виснет на втором сообщении? это что-то с настройкой кафки или же на уровне кода проблема?

вот что показывает # kafka-topics.sh --bootstrap-server kafka:29092 --topic events --describe:
Topic: events  PartitionCount: 2  ReplicationFactor: 2  Configs: segment.bytes=1073741824
 Topic: events  Partition: 0  Leader: 2  Replicas: 2,1  Isr: 2,1
 Topic: events  Partition: 1  Leader: 1  Replicas: 1,2  Isr: 1,2

в чем мб проблема?
источник

EF

Eugene Freeman in pro.kafka
версии kafka и клиента совпадают - 2.4.0:
# kafka-configs.sh --version
2.4.0 (Commit:77a89fcf8d7fa018)

и клиент:
<dependency>
   <groupId>org.apache.kafka</groupId>
   <artifactId>kafka-clients</artifactId>
   <version>2.4.0</version>
</dependency>
источник

AS

Alexandr Smirnov in pro.kafka
props.setProperty(ACKS_CONFIG, "all");
если сделать без подтверждения то тоже самое будет?
источник

EF

Eugene Freeman in pro.kafka
поствил 0 - тот же самый результат
источник

EF

Eugene Freeman in pro.kafka
zoo1:
 image: zookeeper
 restart: always
 container_name: zoo1
 hostname: zoo1
 ports:
   - 2181:2181
   - 8081:8080
 environment:
   ZOO_MY_ID: 1
   ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

zoo2:
 image: zookeeper
 restart: always
 container_name: zoo2
 hostname: zoo2
 ports:
   - 2182:2181
   - 8082:8080
 environment:
   ZOO_MY_ID: 2
   ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181

zoo3:
 image: zookeeper
 restart: always
 container_name: zoo3
 hostname: zoo3
 ports:
   - 2183:2181
   - 8083:8080
 environment:
   ZOO_MY_ID: 3
   ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

kafka:
 image: wurstmeister/kafka
 container_name: kafka
 environment:
   KAFKA_BROKER_ID: 1
   KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2182,zoo3:2183/kafka
   KAFKA_LISTENERS: LISTENER_DOCKER://:29092,LISTENER_LOCAL://:9092
   KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER://kafka:29092,LISTENER_LOCAL://localhost:9092
   KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER:PLAINTEXT,LISTENER_LOCAL:PLAINTEXT
   KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER
   KAFKA_DEFAULT_REPLICATION_FACTOR: 2
   KAFKA_NUM_PARTITIONS: 2
   KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
 ports:
   - 9092:9092
 depends_on:
   - zoo1
   - zoo2
   - zoo3

kafka1:
 image: wurstmeister/kafka
 container_name: kafka1
 environment:
   KAFKA_BROKER_ID: 2
   KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2182,zoo3:2183/kafka
   KAFKA_LISTENERS: LISTENER_DOCKER://kafka1:29092,LISTENER_LOCAL://localhost:9093
   KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER://kafka1:29092,LISTENER_LOCAL://localhost:9093
   KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER:PLAINTEXT,LISTENER_LOCAL:PLAINTEXT
   KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER
   KAFKA_DEFAULT_REPLICATION_FACTOR: 2
   KAFKA_NUM_PARTITIONS: 2
   KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
 ports:
   - 9093:9093
 depends_on:
   - zoo1
   - zoo2
   - zoo3
   - kafka


это docker-compose, которым запускаю кластер
источник

AS

Alexandr Smirnov in pro.kafka
так первое сообщение вообще доходит до брокера?
источник

EF

Eugene Freeman in pro.kafka
если ставлю acks=0, то не доходит, когда ставлю "all", только первое доходит
источник

VG

Vik Gamov in pro.kafka
Eugene Freeman
zoo1:
 image: zookeeper
 restart: always
 container_name: zoo1
 hostname: zoo1
 ports:
   - 2181:2181
   - 8081:8080
 environment:
   ZOO_MY_ID: 1
   ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

zoo2:
 image: zookeeper
 restart: always
 container_name: zoo2
 hostname: zoo2
 ports:
   - 2182:2181
   - 8082:8080
 environment:
   ZOO_MY_ID: 2
   ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181

zoo3:
 image: zookeeper
 restart: always
 container_name: zoo3
 hostname: zoo3
 ports:
   - 2183:2181
   - 8083:8080
 environment:
   ZOO_MY_ID: 3
   ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

kafka:
 image: wurstmeister/kafka
 container_name: kafka
 environment:
   KAFKA_BROKER_ID: 1
   KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2182,zoo3:2183/kafka
   KAFKA_LISTENERS: LISTENER_DOCKER://:29092,LISTENER_LOCAL://:9092
   KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER://kafka:29092,LISTENER_LOCAL://localhost:9092
   KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER:PLAINTEXT,LISTENER_LOCAL:PLAINTEXT
   KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER
   KAFKA_DEFAULT_REPLICATION_FACTOR: 2
   KAFKA_NUM_PARTITIONS: 2
   KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
 ports:
   - 9092:9092
 depends_on:
   - zoo1
   - zoo2
   - zoo3

kafka1:
 image: wurstmeister/kafka
 container_name: kafka1
 environment:
   KAFKA_BROKER_ID: 2
   KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2182,zoo3:2183/kafka
   KAFKA_LISTENERS: LISTENER_DOCKER://kafka1:29092,LISTENER_LOCAL://localhost:9093
   KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER://kafka1:29092,LISTENER_LOCAL://localhost:9093
   KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER:PLAINTEXT,LISTENER_LOCAL:PLAINTEXT
   KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER
   KAFKA_DEFAULT_REPLICATION_FACTOR: 2
   KAFKA_NUM_PARTITIONS: 2
   KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
 ports:
   - 9093:9093
 depends_on:
   - zoo1
   - zoo2
   - zoo3
   - kafka


это docker-compose, которым запускаю кластер
Тулы стандартные нормально с этим композом работают?
источник

VG

Vik Gamov in pro.kafka
Мне кажется что проброс портов не работает правильно
источник

EF

Eugene Freeman in pro.kafka
а стандартные тулы это какие?
источник

VG

Vik Gamov in pro.kafka
Eugene Freeman
а стандартные тулы это какие?
Kafka-*.sh
источник

EF

Eugene Freeman in pro.kafka
насчет портов - мб, но как проверить? вроде все подключения устанавливаются, сообщение доходит, правда одно
источник

EF

Eugene Freeman in pro.kafka
Vik Gamov
Kafka-*.sh
если запускать изнутри контейнера, то вроде работает. указывал в качестве bootstrap-server обе ноды, все вроде резолвится
источник

VG

Vik Gamov in pro.kafka
Eugene Freeman
а стандартные тулы это какие?
kafka-topics, kafka-console-*.sh
источник

VG

Vik Gamov in pro.kafka
Композ возьми нормальный конфлюентовский
источник

EF

Eugene Freeman in pro.kafka
попробую...
источник

EF

Eugene Freeman in pro.kafka
а чем обычно мониторят кафка? что-нибудь простенькое
источник

EF

Eugene Freeman in pro.kafka
Vik Gamov
Композ возьми нормальный конфлюентовский
ооо, пошел процесс
источник

VG

Vik Gamov in pro.kafka
Eugene Freeman
попробую...
источник

EF

Eugene Freeman in pro.kafka
но мне кажется проблека не в компоне, а как ты сказал, что у меня кластер и где-то видимо косяк с портами
источник