[求助] rdkafak 扩展生产者的错误信息回调问题
看如下代码:
<?php
namespace __test__;
use RdKafka\Conf;
use RdKafka\Producer;
use RdKafka\ProducerTopic;
class TestDemo
{
/** @var Producer */
private $producer;
/** @var ProducerTopic */
public $topicObj;
private $hash = [];
private $conf;
public function __construct()
{
$setError = true;
# 创建kafka连接
$conf = new Conf();
$conf->set("compression.codec", "lz4");
echo "setErrorCb\n";
if ($setError)
{
$conf->setErrorCb(function ($producer, $code, $str) {
echo date("Y-m-d H:i:s") . "\terror code [{$code}] message = {$str}" . PHP_EOL;
});
}
echo "setErrorCb over\n";
$producer = new Producer($conf);
$producer->setLogLevel(LOG_INFO);
$producer->addBrokers("172.17.20.119:9192,172.17.20.137:9192");
$topicObj = $producer->newTopic("testDc");
$hash = ["bb" => $topicObj];
#$this->hash = $hash;
echo "send msg \n";
$topicObj->produce(RD_KAFKA_PARTITION_UA, 0, date("Y-m-d H:i:s") . "\t" . "msg", "kkk");
}
}
new TestDemo();
上面的代码运行时可以非常正常的产生如下输出
setErrorCb
setErrorCb over
send msg
2018-11-06 11:55:37 error code [-195] message = 172.17.20.119:9192/bootstrap: Connect to ipv4#172.17.20.119:9192 failed: Connection refused (after 0ms in state CONNECT)
2018-11-06 11:55:38 error code [-195] message = 172.17.20.137:9192/bootstrap: Connect to ipv4#172.17.20.137:9192 failed: Connection refused (after 0ms in state CONNECT)
2018-11-06 11:55:38 error code [-187] message = 2/2 brokers are down
可是如果将$this->hash = $hash;
这一句取消注释,或者将$conf
、$producer
、$topicObj
这三个变量中的任意一个改为$this->conf
、$this->producer
、$this->topicObj
都无法正常输出,除非再将$setError
改为false,有谁知道怎么办么?
推荐文章: