使用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了