public function addTopic($name, array $conf) { $producer = new \RdKafka\Producer(); $producer->addBrokers(implode(',', $conf['brokers'])); $producerTopicConf = new \RdKafka\TopicConf(); $producerTopic = $producer->newTopic($name, $producerTopicConf); $consumer = new \RdKafka\Consumer(); $consumer->addBrokers(implode(',', $conf['brokers'])); $consumerTopicConf = new \RdKafka\TopicConf(); $consumerTopicConf->set("auto.commit.interval.ms", 1000.0); $consumerTopicConf->set("offset.store.sync.interval.ms", 60000.0); $consumerTopic = $consumer->newTopic($name, $consumerTopicConf); $topic = new Topic($name, $producer, $producerTopic, $consumer, $consumerTopic); $this->topics[$name] = $topic; }
/** * 生产初始化 * @param string $configKey * @throws Exception */ function getProductInstance($configKey = "default") { $configObj = new Config("kfk"); $config = $configObj->get($configKey); try { $rk = new \RdKafka\Producer(); $rk->setLogLevel(LOG_DEBUG); $rk->addBrokers($config); $this->rk = $rk; $this->type = 0; } catch (\Exception $e) { throw new \Exception($e->getMessage()); } }
<?php $rk = new RdKafka\Producer(); $rk->setLogLevel(LOG_DEBUG); $rk->addBrokers("127.0.0.1"); $topic = $rk->newTopic("test"); $topic->Producer(RD_KAFKA_PARTITION_UA, 0, "Message payload");
/** * Create a new rdkafka producer * @return \RdKafka\Producer */ protected function createProducer() { $rdKafkaProducer = new \RdKafka\Producer(); $rdKafkaProducer->addBrokers(implode(",", $this->brokers)); return $rdKafkaProducer; }