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++工具