您的位置:首页 > 编程语言 > PHP开发

php rdkafka扩展发送和接收消息

2017-04-24 10:29 369 查看
发送消息

<?php
try {
    $rcf = new RdKafka\Conf();
    $rcf->set('group.id', 'test');
    $cf = new RdKafka\TopicConf();
    $cf->set('offset.store.method', 'broker');
    $cf->set('auto.offset.reset', 'smallest');

    $rk = new RdKafka\Producer($rcf);
    $rk->setLogLevel(LOG_DEBUG);
    $rk->addBrokers("127.0.0.1");
    $topic = $rk->newTopic("test", $cf);
    for($i = 0; $i < 1000; $i++) {
        $topic->produce(0,0,'test' . $i);//没有setMessge接口了,使用produce  参考:https://libraries.io/github/mentionapp/php-rdkafka
    }
} catch (Exception $e) {
    echo $e->getMessage();
}

接收消息

<?php
try {
$rcf = new RdKafka\Conf();
$rcf->set('group.id', 'test');
$cf = new RdKafka\TopicConf();
/*
$cf->set('offset.store.method', 'file');
*/
$cf->set('auto.offset.reset', 'smallest');
$cf->set('auto.commit.enable', true);

$rk = new RdKafka\Consumer($rcf);
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("127.0.0.1");
$topic = $rk->newTopic("test", $cf);
//$topic->consumeStart(0, RD_KAFKA_OFFSET_BEGINNING);
while (true) {
$topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);
$msg = $topic->consume(0, 1000);
var_dump($msg);
if ($msg->err) {
echo $msg->errstr(), "\n";
break;
} else {
echo $msg->payload, "\n";
}
$topic->consumeStop(0);
sleep(1);
}
} catch (Exception $e) {
echo $e->getMessage();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: