Производитель Kafka готов состояние не слушает после 7мс - PullRequest
0 голосов
/ 14 июня 2019

У меня 1 зоопарк, 1 ансамбль Кафки.Я использую пакет kafka-node npm для подключения к брокеру Kafka, создания и потребления сообщений.Ниже приведен упрощенный релевантный фрагмент, который я использую для работы.

const kafka = require('kafka-node');

const client = new kafka.KafkaClient({kafkaHost: '0.0.0.0:9092',connectTimeout:10000});
let Producer = kafka.Producer;
let producer = new Producer(client);

setTimeout(() => {
    producer.on('ready', function () {
        console.log("Producer is ready");
    });

    producer.on('error', function (err) {
        console.error("Producer is not ready");
    })
}, 5000);

Приведенный выше код не выводит значения и программа прекращает работу.Сценарий не заканчивается.Я изменил значение миллисекунды функции setTimeout на 0, и программа выдала Producer is ready, что показалось мне очень странным.Поэтому я менял это значение несколько раз, и в результате при получении значения функции 7 получается желаемый результат, а при присвоении ему значения 8 происходит остановка программы.Я не понимаю, почему.

Ниже приведены настройки моего zookeeper и Kafka:

    version: '3.3'
    services:
      zookeeper:
        image: 'confluentinc/cp-zookeeper:5.0.0'
        hostname: zookeeper
        ports:
          - '2191:2181'
        environment:
          ZOOKEEPER_CLIENT_PORT: 2181
          ZOOKEEPER_TICK_TIME: 2000
      kafka-broker:
        image: 'confluentinc/cp-kafka:5.0.0'
        ports:
          - '9092:9092'
          - '9083:9093'
        depends_on:
          - 'zookeeper'
        environment:
          KAFKA_BROKER_ID: 1
          KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT2://kafka-broker:9093
          KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT, PLAINTEXT2:PLAINTEXT
          KAFKA_TOPICS: "test_topic"

Я попытался повторить проблему на другом компьютере.На этой машине 12 - это значение, при котором программа «отказывает».Функция producer.send должна вызываться, как только производитель готов, что другими словами будет означать вызов функции send внутри функции обратного вызова состояния ready.Я понял, что состояние ready сохраняется только в течение нескольких мс.Я уверен, что есть некоторая информация, с которой я не знаком, которая важна в этом случае, но я прочитал документацию пакета kafka-node и не нашел ничего уместного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...