使用php连接kafka

使用Rdkafka

Rdkafka是PHP连接kafka的扩展,跟mysqli,redis同理

rdkakfka 文档地址:https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/book.rdkafka.html

使用php连接kafka

High-level consumer 是高级消费者,Low-level consumer 是低级消费者模式

两者区别是,高级的基本用的是那些已经封装好的函数,很多配置项不需要你配置,不过*度不高

低级的是使用未封装好的函数,很多配置项给自己配置,就是很麻烦,其实很多配置用默认的才是最优解,自己瞎设置有时候反而效率更差

所以我这边推荐使用高级模式

具体代码直接复制官网的demo改成自己想要的方法就好

这里主要是讨论一个问题,高级模式下,如何让多个消费者消费同一个主题,这种场景主要是当生产者突然大批量生产主题的时候,一个消费者估计吃不消;因为kafka只允许同一个组别的只有一个消费者来消费队列

方法:将数据平均的分在不同的主题下,然后开启多个消费者对这些主题进行消费

生产者代码如下

使用php连接kafka

第二个红框框就是数据分配到不同的主题上,而主题就用一个数组保存起来,作为配置项

消费者代码就不贴了,就是两个消费者代码是一样的,但是订阅的主题是不一样的

这样就能实现在高级消费者模式下,开启多个消费者对同一个数据进行消费

那如果同一条数据需要多个消费者都消费一次呢,也就是将数据A广播给消费者a,b,c,d 然后a,b,c,d都需要消费A

只需要把消费者的组别设置成不一样的,但是订阅同一个主题即可

也就是消费者1

使用php连接kafka

消费者2

使用php连接kafka

然后开启两个消费者,两个消费者就都能消费数据A了