使用php连接kafka
使用Rdkafka
Rdkafka是PHP连接kafka的扩展,跟mysqli,redis同理
rdkakfka 文档地址:https://arnaud.le-blanc.net/php-rdkafka-doc/phpdoc/book.rdkafka.html
High-level consumer 是高级消费者,Low-level consumer 是低级消费者模式
两者区别是,高级的基本用的是那些已经封装好的函数,很多配置项不需要你配置,不过自由度不高
低级的是使用未封装好的函数,很多配置项给自己配置,就是很麻烦,其实很多配置用默认的才是最优解,自己瞎设置有时候反而效率更差
所以我这边推荐使用高级模式
具体代码直接复制官网的demo改成自己想要的方法就好
这里主要是讨论一个问题,高级模式下,如何让多个消费者消费同一个主题,这种场景主要是当生产者突然大批量生产主题的时候,一个消费者估计吃不消;因为kafka只允许同一个组别的只有一个消费者来消费队列
方法:将数据平均的分在不同的主题下,然后开启多个消费者对这些主题进行消费
生产者代码如下
第二个红框框就是数据分配到不同的主题上,而主题就用一个数组保存起来,作为配置项
消费者代码就不贴了,就是两个消费者代码是一样的,但是订阅的主题是不一样的
这样就能实现在高级消费者模式下,开启多个消费者对同一个数据进行消费
那如果同一条数据需要多个消费者都消费一次呢,也就是将数据A广播给消费者a,b,c,d 然后a,b,c,d都需要消费A
只需要把消费者的组别设置成不一样的,但是订阅同一个主题即可
也就是消费者1
消费者2
然后开启两个消费者,两个消费者就都能消费数据A了