- bootstrap.servers
- group.id
- fetch.min.bytes
- fetch.max.bytes
- fetch.max.wait.ms
- max.partition.fetch.bytes
- max.poll.records
- connections.max.idle.ms
- exclude.internal.topics
- receive.buffer.bytes
- send.buffer.bytes
- request.timeout.ms
- metadata.max.age.ms
- reconnect.backoff.ms
- auto.offset.reset
- enable.auto.commit
- auto.commit.interval.ms
- partition.assignment.strategy
- interceptor.class
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
用來配置消費者客戶端的攔截器
