Kafka消費者——重要參數配置


bootstrap.servers

broker集群地址,格式:ip1:port,ip2:port...,不需要設定全部的集群地址,設置兩個或者兩個以上即可。

group.id

消費者隸屬的消費者組名稱,如果為空會報異常,一般而言,這個參數要有一定的業務意義。

fetch.min.bytes

該參數用來配置 Consumer 在一次拉取請求(調用 poll() 方法)中能從 Kafka 中拉取的最小數據量,默認值為1(B)。Kafka 在收到 Consumer 的拉取請求時,如果返回給 Consumer 的數據量小於這個參數所配置的值,那么它就需要進行等待,直到數據量滿足這個參數的配置大小。可以適當調大這個參數的值以提高一定的吞吐量,不過也會造成額外的延遲(latency),對於延遲敏感的應用可能就不可取了。

fetch.max.bytes

該參數與 fetch.min.bytes 參數對應,它用來配置 Consumer 在一次拉取請求中從Kafka中拉取的最大數據量,默認值為52428800(B),也就是50MB。

如果這個參數設置的值比任何一條寫入 Kafka 中的消息要小,那么會不會造成無法消費呢?該參數設定的不是絕對的最大值,如果在第一個非空分區中拉取的第一條消息大於該值,那么該消息將仍然返回,以確保消費者繼續工作。Kafka 中所能接收的最大消息的大小通過服務端參數 message.max.bytes(對應於主題端參數 max.message.bytes)來設置。

fetch.max.wait.ms

這個參數也和 fetch.min.bytes 參數有關,如果 Kafka 僅僅參考 fetch.min.bytes 參數的要求,那么有可能會一直阻塞等待而無法發送響應給 Consumer,顯然這是不合理的。fetch.max.wait.ms 參數用於指定 Kafka 的等待時間,默認值為500(ms)。如果 Kafka 中沒有足夠多的消息而滿足不了 fetch.min.bytes 參數的要求,那么最終會等待500ms。這個參數的設定和 Consumer 與 Kafka 之間的延遲也有關系,如果業務應用對延遲敏感,那么可以適當調小這個參數。

max.partition.fetch.bytes

這個參數用來配置從每個分區里返回給 Consumer 的最大數據量,默認值為1048576(B),即1MB。這個參數與 fetch.max.bytes 參數相似,只不過前者用來限制一次拉取中每個分區的消息大小,而后者用來限制一次拉取中整體消息的大小。同樣,如果這個參數設定的值比消息的大小要小,那么也不會造成無法消費,Kafka 為了保持消費邏輯的正常運轉不會對此做強硬的限制。

max.poll.records

這個參數用來配置 Consumer 在一次拉取請求中拉取的最大消息數,默認值為500(條)。如果消息的大小都比較小,則可以適當調大這個參數值來提升一定的消費速度。

connections.max.idle.ms

這個參數用來指定在多久之后關閉閑置的連接,默認值是540000(ms),即9分鍾。

exclude.internal.topics

Kafka 中有兩個內部的主題: __consumer_offsets 和 __transaction_state。exclude.internal.topics 用來指定 Kafka 中的內部主題是否可以向消費者公開,默認值為 true。如果設置為 true,那么只能使用 subscribe(Collection)的方式而不能使用 subscribe(Pattern)的方式來訂閱內部主題,設置為 false 則沒有這個限制。

receive.buffer.bytes

這個參數用來設置 Socket 接收消息緩沖區(SO_RECBUF)的大小,默認值為65536(B),即64KB。如果設置為-1,則使用操作系統的默認值。如果 Consumer 與 Kafka 處於不同的機房,則可以適當調大這個參數值。

send.buffer.bytes

這個參數用來設置Socket發送消息緩沖區(SO_SNDBUF)的大小,默認值為131072(B),即128KB。與receive.buffer.bytes參數一樣,如果設置為-1,則使用操作系統的默認值。

request.timeout.ms

這個參數用來配置 Consumer 等待請求響應的最長時間,默認值為30000(ms)。

metadata.max.age.ms

這個參數用來配置元數據的過期時間,默認值為300000(ms),即5分鍾。如果元數據在此參數所限定的時間范圍內沒有進行更新,則會被強制更新,即使沒有任何分區變化或有新的 broker 加入

reconnect.backoff.ms

這個參數用來配置嘗試重新連接指定主機之前的等待時間(也稱為退避時間),避免頻繁地連接主機,默認值為50(ms)。這種機制適用於消費者向 broker 發送的所有請求。

auto.offset.reset

參數值為字符串類型,有效值為“earliest”“latest”“none”,配置為其余值會報出異常

enable.auto.commit

boolean 類型,配置是否開啟自動提交消費位移的功能,默認開啟

auto.commit.interval.ms

當enbale.auto.commit參數設置為 true 時才生效,表示開啟自動提交消費位移功能時自動提交消費位移的時間間隔

partition.assignment.strategy

消費者的分區分配策略

interceptor.class

用來配置消費者客戶端的攔截器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM