Kafka訂閱主題與分割槽

2021-10-07 22:20:44 字數 1356 閱讀 6568

在建立好消費者之後,我們就需要為該消費者訂閱相關的主題了。乙個消費者可以訂閱乙個或多個主題

使用subscribe()方法訂閱了乙個主題,對於這個方法而言,既可以以集合的形式訂閱多個主題,也可以以正規表示式的形式訂閱特定模式的主題,

消費者使用集合的方式(subscribe(collection))來訂閱主題而言,比較容易理解,訂閱了什麼主題就消費什麼主題中的訊息。如果前後兩次訂閱了不同的主題,那麼消費者以最後一次的為準

消費者採用的是正規表示式的方式(subscribe(pattern))訂閱,在之後的過程中,如果有人又建立了新的主題,並且主題的名字與正規表示式相匹配,那麼這個消費者就可以消費到新新增的主題中的訊息。如果應用程式需要消費多個主題,並且可以處理不同的型別,那麼這種訂閱方式就很有效

subscribe 的過載方法中有乙個引數型別是 consumerrebalance-listener,這個是用來設定相應的再均衡***的。

消費者不僅可以通過kafkaconsumer.subscribe()方法訂閱主題,還可以直接訂閱某些主題的特定分割槽,在kafkaconsumer中還提供了乙個assign()方法來實現這些功能,

我們可以使用 kafkaconsumer 中的 unsubscribe()方法來取消主題的訂閱。這個方法既可以取消通過 subscribe(collection)方式實現的訂閱,也可以取消通過subscribe(pattern)方式實現的訂閱,還可以取消通過 assign(collection)方式實現的訂閱,可以使用 kafkaconsumer 中的 unsubscribe()方法來取消主題的訂閱。這個方法既可以取消通過 subscribe(collection)方式實現的訂閱,也可以取消通過subscribe(pattern)方式實現的訂閱,還可以取消通過 assign(collection)方式實現的訂閱。如果將subscribe(collection)或assign(collection)中的集合引數設定為空集合,那麼作用等同於unsubscribe()方法,下面示例中的三行**的效果相同:

集合訂閱的方式subscribe(collection)、正規表示式訂閱的方式subscribe(pattern)和指定分割槽的訂閱方式 assign(collection)分表代表了三種不同的訂閱狀態:auto_topics、auto_pattern和user_assigned(如果沒有訂閱,那麼訂閱狀態為none)。然而這三種狀態是互斥的,在乙個消費者中只能使用其中的一種,否則會報出illegalstateexception異常

subscribe()方法訂閱主題具有消費者自動再均衡的功能,在多個消費者的情況下可以根據分割槽分配策略來自動分配各個消費者與分割槽的關係。當消費組內的消費者增加或減少時,分割槽分配關係會自動調整,以實現消費負載均衡及故障自動轉移。而通過assign()方法訂閱分割槽時,是不具備消費者自動均衡的功能的

kafka系列 主題和分割槽

使用kafka的同學,一定會經常接觸到主題和分割槽這兩個概念,這是kafka中最核心的兩個概念了。主題作為乙個邏輯容器,對訊息進行歸類,主題下又可以分成若干個分割槽。所以kafka的訊息可以看成是 的結構 主題 分割槽 訊息。每個分割槽下可以存在若干個副本,副本用來進行資料備份,提公升容災能力。分割...

深入理解Kafka(4) 主題與分割槽

主題的管理包括建立主題 檢視主題資訊 修改主題和刪除主題等操作。可以通過kafka提供的kafka topics.sh指令碼來執行這些操作,這個指令碼位於 kafka home bin 目錄下,其核心 僅有一行,具體如下 exec dirname 0 kafka run class.shkafka....

Kafka 中兩個重要概念 主題與分割槽

在 kafka 中還有兩個特別重要的概念 主題 topic 與分割槽 partition kafka 中的訊息以主題為單位進行歸類,生產者負責將訊息傳送到特定的主題 傳送到 kafka 集群中的每一條訊息都要指定乙個主題 而消費者負責訂閱主題並進行消費。主題是乙個邏輯上的概念,它還可以細分為多個分割...