PHP Kafka消息队列使用
1. 安装 Kafka 服务
直接到 kafka官网 , 下载最新的
1 | wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz |
解压,进入目录
1 | tar -zxvf kafka_2.13-2.5.0.tgz |
开始使用
a. 启动 Kafka 服务
使用安装包中的脚本启动单节点 Zookeeper 实例
1 | bin/zookeeper-server-start.sh -daemon config/zookeeper.properties |
使用 kafka-server-start.sh
启动 kafka 服务
1 | bin/kafka-server-start.sh config/server.properties |
创建 topic
1 | bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test |
查看 topic
列表,检查是否创建成功
1 | bin/kafka-topics.sh --list --zookeeper localhost:2181 |
生产者,发送消息
1 | bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test |
服务方面到这里就差不多了,接下来就是php的事了。
2. 安装 PHP 扩展
rdkafka
安装需要依赖 librdkafka
, 所以先安装 librdkafka
1 | git clone https://github.com/edenhill/librdkafka.git |
安装php-rdkafka扩展
1 | git clone https://github.com/arnaud-lb/php-rdkafka.git |
在 php-ini
加上
1 | extension=rdkafka.so |
重启,php-fpm,就应该可以看到该扩展。
3. 使用
创建一个生产者类
1 |
|
创建一个消费类
1 |
|
使用
1 |
问题汇总
a. No Java runtime present, requesting install
因为 kafka 需要 java 环境支持,所以安装 java 环境。可以到 javase-jdk14-downloads 选择自己的版本进行下载安装
b. 创建 topic 出现:Replication factor: 1 larger than available brokers: 0
意思是至少有一个brokers.也就是说并没有有效的brokers可以用。你要确保你的kafka已经启动了
参考