bootstrap.servers |
kafka集羣地址,ip+端口,以逗號隔開。無論這邊配置的是什麼服務器,客戶端會使用全部的服務器。配置的列表只會影響初始發現全部主機。配置的格式應該是:ip:port,ip:port,由於配置的內容只是用於服務集羣的初始發現(集羣地址可能會變化),配置能夠不包含全部的服務器(你可能須要配置多於一個,防止某個服務掛掉) |
list |
|
key.serializer |
實現Serializer接口的序列化類鍵 |
class |
|
value.serializer |
實現Serializer接口的序列化類值 |
class |
|
acks |
生產者認爲一個請求完成,所須要kafka集羣主服務的應答次數。這個配置控制已發送消息的持久性。下面是這個配置可能的值。acks=0:若是設置爲0,生產者不會等待kafka的響應。消息會被馬上加到發送緩衝通道中,而且認爲已經發送成功。這種狀況下,不能保證kafka接收到了這條消息,retries配置不會生效,每條消息的偏移量都是1;acks=1:這個配置意味着kafka會把這條消息寫到本地日誌文件中,可是不會等待集羣中其餘機器的成功響應。這種狀況下,在寫入日誌成功後,集羣主機器掛掉,同時從機器還沒來得及寫的話,消息就會丟失掉。acks=all:這個配置意味着leader會等待全部的follower同步完成。這個確保消息不會丟失,除非kafka集羣中全部機器掛掉。這是最強的可用性保證。 |
string |
1 |
buffer.memory |
生產者等待發送到kafka的消息隊列佔用內容的大小。若是消息發送的速度比傳輸給kafka快,生產者會在拋出異常後,阻塞max.block.ms的時間。這個配置應該大致與生產者用到的內存差很少,但不全是,由於生產者使用的內存不所有用於消息隊列。還有些內存會被用於壓縮和保持長鏈接。 |
long |
33554432 |
compression.type |
生產者的數據壓縮類型。默認是不壓縮(no compression)。有效的配置能夠是none,gzip,snappy或lz4。壓縮是數據的批量壓縮,因此批量的效果也就是壓縮的比例(壓縮的比例越好,數據量越小)。 |
string |
none |
retries |
配置爲大於0的值的話,客戶端會在消息發送失敗時從新發送。重試等同於在發送有異常時從新發送消息。若是不把max.in.flight.requests.per.connection設爲1,重試可能會改變消息的順序。兩條消息同時發送到同一個分區,第一條失敗了,並在第二條發送成功後從新發送,那麼第二條消息可能在第一條消息前到達。 |
int |
0 |
ssl.key.password |
存在文件中的私鑰密碼,對於生產者來講可選。 |
password |
null |
ssl.keystore.location |
存儲私鑰的文件地址,能夠用於不一樣客戶端的認證。 |
string |
null |
ssl.keystore.password |
私鑰文件存儲密碼。只有當ssl.keystore.location配置了,纔有用。 |
password |
null |
ssl.truststore.location |
信任存儲文件路徑。 |
string |
null |
ssl.truststore.password |
信任存儲文件密碼 |
password |
null |
batch.size |
當多條消息須要發送到同一個分區時,生產者會嘗試合併網絡請求。這會提升client和生產者的效率。若是消息體大於這個配置,生產者不會嘗試發送消息。發送給kafka的消息包含不一樣的批次,每批發送給一個分區。批次大小過小的話可能會下降吞吐量。若是設爲0,會禁用批處理功能。若是批次設置很大,可能會有些浪費內存,由於咱們會預留這部份內存用於額外的消息。 |
int |
16384 |
client.id |
發送請求給kafka時帶上的生產者標識。目的是爲了在ip+端口以外,經過邏輯上的應用名稱跟蹤請求,以便記錄在kafka日誌中。 |
string |
"" |
connections.max.idle.ms |
在配置項的時間以後,關閉空閒的連接 |
long |
540000 |
linger.ms |
消息延遲發送的毫秒數,目的是爲了等待多個消息,在同一批次發送,減小網絡請求。 |
long |
0 |
max.block.ms |
這個配置控制KafkaProducer.send()和KafkaProducer.partitionsFor()的阻塞時間,當緩衝區空間不夠或者源數據丟失時阻塞 |
int |
60000 |
max.request.size |
生產者一次請求的最大字節數,這也是一次消息體的最大值。注意到kafka集羣有本身的消息限制,可能與這個值不同。這個配置限制的是生產者一次發送消息的大小,爲的是避免發送大的數據量。 |
int |
1048576 |
partitioner.class |
實現Partitioner接口的分區類 |
class |
class org.apache.kafka.clients.producer.internals.DefaultPartitioner |
receive.buffer.bytes |
socket接收緩存空間的大小,讀數據時用 |
int |
32768 |
request.timeout.ms |
生產者發送消息後等待響應的最大時間,若是在配置時間內沒有獲得響應,生產者會重試。 |
int |
30000 |
timeout.ms |
kafka集羣的leader等待follower響應的超時時間。 |
int |
30000 |