php下安装kafka

Dec 13, 2016


windows下的kafka环境搭建

有关kafka的一些介绍以及Linux下的环境搭建,可以看看这篇文章http://www.aboutyun.com/thread-12882-1-1.htmllinux-kafka

本篇文章主要介绍了kafka在windows下的环境搭建以及安装php-rdkafka扩展

下面就来介绍一下环境搭建的steps

step1:安装jdk】

在官网根据自己的电脑下载对应的jdk版本,记得配置系统变量JAVA_HOME和PATH路径哦, 安装成功结果如下图所示:

jdk

step2:安装zookeeper

Kafka的运行依赖于Zookeeper,所以在运行Kafka之前我们需要安装并运行Zookeeper。我们可以在官网下载zookeeper

解压文件,打开conf,并修改zoo_sample.cfg

	dataDir=D:\zookeeper\zookeeper-3.4.8\data
	dataLogDir=D:\zookeeper\zookeeper-3.4.8\log

运行zookeeper,在cmd界面输入zkserver.cmd,输出以下信息,则表示zookeeper启动成功

jdk

step3:安装并运行kafka

在官网下载安装文件kafka

解压文件,修改config文件夹下的server.properties

log.dirs=D:\kafka\kafka_2.11-0.10.0.1\logs

windows下执行windows下的bat文件,linux下则是执行bash文件

OK,我们打开cmd界面,输入以下命令

.\bin\windows\kafka-server-start.bat .\config\server.properties

结果如下:

kafka

ok,在这里我们可能会遇到这样的报错:

Error: missing `server' JVM at `D:\jdk1.8\jdk\bin\server\jvm.dll'.

没关系,把jdk下的jre\bin\server下的server文件夹复制到D:\jdk1.8\jdk\bin目录试试,安装的时候记得检查我们的环境变量哦!吼吼,接下来让我们开始测试一下吧

step4:打开一个producer
D:\kafka\kafka_2.11-0.10.0.1\bin\windows>kafka-console-producer.bat --broker-list localhost:9092 --topic test

输入消息进行测试,如下图所示

producer

step5:打开一个consumer
D:\kafka\kafka_2.11-0.10.0.1\bin\windows>kafka-console-consumer.bat --zookeeper  localhost:2181 --topic test

我们可以看到输出的消息,如下图所示

consumer

ok,到此为止我们的kafka环境就搭建好啦,接下来我们开始装kafka扩展。windows 下载dll扩展,linux下直接编译就好kafka,扩展安装好了以后,查看phpinfo信息

php-kafka

好了,接下来就是测试time

<?php
//连接kafka
$rk = new RdKafka\Producer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("127.0.0.1:9092");
$topic = $rk->newTopic("hx");
$topic->produce(RD_KAFKA_PARTITION_UA, 0, "little star star lalala");

在我们的kafka可以看到

message

取出消息

<?php
$rk = new RdKafka\Consumer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("127.0.0.1");
$topic->consumeStart(0, RD_KAFKA_OFFSET_BEGINNING);
while (true) {
$msg = $topic->consume(0, 1000);
    if ($msg->err) {
        echo $msg->errstr(), "\n";
        break;
    } else {
        echo $msg->payload, "\n";
    } }

如果我们在浏览器里面运行,就会出现以下错误

Fatal error: Uncaught RdKafka\Exception: Failed to create thread: No error (0) in E:\phpstudy\WWW\sim\script\test.php:5 Stack trace: #0 E:\phpstudy\WWW\sim\script\test.php(5): RdKafka\Consumer->__construct() #1 {main} thrown in E:\phpstudy\WWW\sim\script\test.php on line 5

只能在命令行模式下面执行咯 getmsg

这样我们就搭建好了我们的环境!!似不似很6呀呀呀呀呀~~~~~~~