php之kafka扩展

php之kafka扩展

php安装kafka扩展,对接kafka消息中心。目前, 有两种选择,1、php写的composer包,不需要特别的安装,可以直接使用,(但是使用过程中,可能从源头上丢少量消息)。2、直接安装c扩展rdkafka。

但是,不管用何种扩展,其实跟业务逻辑,相差并不大。主要是编写一个handel,用来处理消息。剩下的处理消息的业务,可以编写成一个模块

相关资源

参见文章

pecl https://pecl.php.net/package/rdkafka

这个是一系列文章,感觉还不错。Kafka的简介Kafka的架构

编译安装

源代码地址:https://github.com/arnaud-lb/php-rdkafka

文档地址,从pecl可以找到,实际上在php官方手册里面。

不能使用下面来安装

yum install librdkafka

正确的安装方式如下:

# 依赖扩展 
tar zxf librdkafka-1.5.3.tar.gz
cd librdkafka-1.5.3/
./configure
make
make install

# rdkafka   从pecl下载 

tar zxvf rdkafka-4.1.2.tgz
cd rdkafka-4.1.2/
/usr/local/php73/bin/phpize
./configure --with-php-config=/usr/local/php73/bin/php-config

先安装

上面的扩展安装,经过一翻折腾后,需要继续添加配置到php.ini中

extension=rdkafka.so

使用composer安装

composer require "nmred/kafka-php"

仓库名称已经更换为:

https://github.com/weiboad/kafka-php

kafka已使用docker安装成功,但是本机上没有安装到合适的php(实际上是卡在各种依赖的安装),最终安装失败,导致……耗费太久,折腾不下去了。

kafka-php

使用官方的例子、官方的consumer,基本上能完成一些基本操作。针对不同的topic,编写不同的类,并将消息作为key,对应的处理类的实例作为value,形成一个关联数组,并根据接收到的消息,从中选择一个适合的类,来处理当前的消息。

问题解决

一般来说,安装需要安装gcc、autoconf等工具库,如果没有,则需要先安装。

如下提示,则需要安装autoconf 工具链。

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

提示,没有安装gcc

configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details

有一些需要make、gcc-c++工具