php的kafka踩坑(一)

PHP使用Kafka消息队列遇到的问题及解决初探
本文记录了作者在使用PHP集成Kafka作为消息队列时遇到的挑战,包括安装librdkafka扩展的困扰,旧版kafka-php包的版本冲突,以及enqueue/rdkafka包的使用体验。在尝试过程中,作者发现多消费者会同时接收所有消息,而期望的是不同消费者间的消息分配。设置group_id未解决问题,期待进一步的解决方案。

最近项目上有一个需要用到消息队列的功能,从网上找了一些php相关的kafka使用的教程和博客,大抵都是安装php的拓展librdkafka(这里就不讲这个拓展的安装方法了,搜一下还是有很多教程的),然后直接用这个拓展进行开发,但是我直接用这个拓展开发的时候,不知道为啥运行不起来,一直报错(应该是我太菜了,哈哈哈哈哈哈)…我从github上找了一些相关的包想直接用一下,但是发现很多包都是几年前的了,基本上都是kafka 0.x 版本的。

我看了一下最多star的一个包,链接是:https://github.com/weiboad/kafka-php/releases,看代码最新更新时间是两年前了,但是这个包的标签最新版本是V0.2.0.8,就是17年创建的了,我尝试用composer安装了一下,但是跟我项目的其它包冲突了,这个版本对psr/log的包限制在了1.0.2版本,但我其它包的限制是必须大于1.1,所以后面也没装下来用过,我看了一下master分支最新的代码是对这个包的限制也提升到了^1.0了,但是不确定master的代码有没有坑,不太敢用,后面看开发者有没有再更新吧,再更新应该是能用的,还有这个包有一个好处就是,不需要装librdkafka拓展。

后面我用了enqueue/rdkafka 这个包,链接:https://github.com/php-enqueue/rdkafka,这个包我能成功跑起来,这个包的基础依赖还是librdkafka的拓展,使用这个包前需要先装这个拓展,但是对拓展的版本有一个限制,最新版的0.10.1版本要求librdkafka的版本^3.0.3,我一开始装的是最新的4.*,后面重新装了一下,就可以跑起来了。

下面展示一下我测试的代码,只是能运行起来,但是还没达到我想要的预期

生产者

$connFactory = new RdKafkaConnectionFactory([
    'global' => [
        'metadata.broker.list' => '127.0.0.1:9092',
        'socket.timeout.ms' => '50'
    ]
]);
$context = 
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值