如何将消息远程发送到kafka

时间:2019-11-18 13:33:20

标签: php apache-kafka kafka-producer-api

我对卡夫卡很陌生。我正在尝试从本地机器生产商向kafka服务器发送消息。我无法弄清楚问题所在或正在做什么。

$config = \Kafka\ProducerConfig::getInstance();
    $config->setMetadataRefreshIntervalMs(10000);
    $config->setMetadataBrokerList('localhost:9092');
    $config->setBrokerVersion('1.0.0');
    $config->setRequiredAck(1);
    $config->setIsAsyn(false);
    $config->setProduceInterval(500);
    $producer = new \Kafka\Producer(
        function() {
            return [
                [
                  'topic' => 'test',
                  'value' => 'test....message.',
                  'key' => 'testkey',
                ],
            ];
        }
    );
    // $producer->setLogger($logger);
    $producer->success(function($result) {
        print_r($result);
    });
    $producer->error(function($errorCode) {
            var_dump($errorCode);
    });
    $producer->send(true);

输出:- 致命错误:C:\ xampp \ htdocs \ vendor \ nmred \ kafka-php \ src \ Kafka \ Producer \ Process.php中未捕获的异常“ Kafka \ Exception”,消息为“没有代理可以连接metadataBrokerList”第193行

2 个答案:

答案 0 :(得分:0)

因此,您要尝试从本地计算机到另一台服务器生产?在这种情况下,您需要更新行

$config->setMetadataBrokerList('localhost:9092');

指向该服务器的域名而不是localhost:9092

答案 1 :(得分:0)

这是我在codeigniter中用于生产者的库https://github.com/weiboad/kafka-php。 该库工作正常。 问题是服务器端口号已更改,默认情况下实际上是29092,连接失败的原因是端口9092。