SpringKafka文檔地址:https://docs.spring.io/spring-kafka/reference/htmlsingle
kafka文檔地址:http://kafka.apache.org/documentation
SpringKafka中配置的Java配置實(shí)現(xiàn)類:https://github.com/spring-projects/spring-boot/blob/v1.5.4.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java
配置及參數(shù)說明如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#################consumer的配置參數(shù)(開始)################# #如果'enable.auto.commit'為true,則消費(fèi)者偏移自動提交給Kafka的頻率(以毫秒為單位),默認(rèn)值為5000。 spring.kafka.consumer.auto-commit-interval; #當(dāng)Kafka中沒有初始偏移量或者服務(wù)器上不再存在當(dāng)前偏移量時該怎么辦,默認(rèn)值為latest,表示自動將偏移重置為最新的偏移量 #可選的值為latest, earliest, none spring.kafka.consumer.auto-offset-reset=latest; #以逗號分隔的主機(jī):端口對列表,用于建立與Kafka群集的初始連接。 spring.kafka.consumer.bootstrap-servers; #ID在發(fā)出請求時傳遞給服務(wù)器;用于服務(wù)器端日志記錄。 spring.kafka.consumer.client-id; #如果為true,則消費(fèi)者的偏移量將在后臺定期提交,默認(rèn)值為true spring.kafka.consumer.enable-auto-commit=true; #如果沒有足夠的數(shù)據(jù)立即滿足“fetch.min.bytes”給出的要求,服務(wù)器在回答獲取請求之前將阻塞的最長時間(以毫秒為單位) #默認(rèn)值為500 spring.kafka.consumer.fetch-max-wait; #服務(wù)器應(yīng)以字節(jié)為單位返回獲取請求的最小數(shù)據(jù)量,默認(rèn)值為1,對應(yīng)的kafka的參數(shù)為fetch.min.bytes。 spring.kafka.consumer.fetch-min-size; #用于標(biāo)識此使用者所屬的使用者組的唯一字符串。 spring.kafka.consumer.group-id; #心跳與消費(fèi)者協(xié)調(diào)員之間的預(yù)期時間(以毫秒為單位),默認(rèn)值為3000 spring.kafka.consumer.heartbeat-interval; #密鑰的反序列化器類,實(shí)現(xiàn)類實(shí)現(xiàn)了接口org.apache.kafka.common.serialization.Deserializer spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer #值的反序列化器類,實(shí)現(xiàn)類實(shí)現(xiàn)了接口org.apache.kafka.common.serialization.Deserializer spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer #一次調(diào)用poll()操作時返回的最大記錄數(shù),默認(rèn)值為500 spring.kafka.consumer.max-poll-records; #################consumer的配置參數(shù)(結(jié)束)################# #################producer的配置參數(shù)(開始)################# #procedure要求leader在考慮完成請求之前收到的確認(rèn)數(shù),用于控制發(fā)送記錄在服務(wù)端的持久化,其值可以為如下: #acks = 0 如果設(shè)置為零,則生產(chǎn)者將不會等待來自服務(wù)器的任何確認(rèn),該記錄將立即添加到套接字緩沖區(qū)并視為已發(fā)送。在這種情況下,無法保證服務(wù)器已收到記錄,并且重試配置將不會生效(因?yàn)榭蛻舳送ǔ2粫廊魏喂收希瑸槊織l記錄返回的偏移量始終設(shè)置為-1。 #acks = 1 這意味著leader會將記錄寫入其本地日志,但無需等待所有副本服務(wù)器的完全確認(rèn)即可做出回應(yīng),在這種情況下,如果leader在確認(rèn)記錄后立即失敗,但在將數(shù)據(jù)復(fù)制到所有的副本服務(wù)器之前,則記錄將會丟失。 #acks = all 這意味著leader將等待完整的同步副本集以確認(rèn)記錄,這保證了只要至少一個同步副本服務(wù)器仍然存活,記錄就不會丟失,這是最強(qiáng)有力的保證,這相當(dāng)于acks = -1的設(shè)置。 #可以設(shè)置的值為:all, -1, 0, 1 spring.kafka.producer.acks=1 #每當(dāng)多個記錄被發(fā)送到同一分區(qū)時,生產(chǎn)者將嘗試將記錄一起批量處理為更少的請求, #這有助于提升客戶端和服務(wù)器上的性能,此配置控制默認(rèn)批量大小(以字節(jié)為單位),默認(rèn)值為16384 spring.kafka.producer.batch-size=16384 #以逗號分隔的主機(jī):端口對列表,用于建立與Kafka群集的初始連接 spring.kafka.producer.bootstrap-servers #生產(chǎn)者可用于緩沖等待發(fā)送到服務(wù)器的記錄的內(nèi)存總字節(jié)數(shù),默認(rèn)值為33554432 spring.kafka.producer.buffer-memory=33554432 #ID在發(fā)出請求時傳遞給服務(wù)器,用于服務(wù)器端日志記錄 spring.kafka.producer.client-id #生產(chǎn)者生成的所有數(shù)據(jù)的壓縮類型,此配置接受標(biāo)準(zhǔn)壓縮編解碼器('gzip','snappy','lz4'), #它還接受'uncompressed'以及'producer',分別表示沒有壓縮以及保留生產(chǎn)者設(shè)置的原始壓縮編解碼器, #默認(rèn)值為producer spring.kafka.producer.compression-type=producer #key的Serializer類,實(shí)現(xiàn)類實(shí)現(xiàn)了接口org.apache.kafka.common.serialization.Serializer spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer #值的Serializer類,實(shí)現(xiàn)類實(shí)現(xiàn)了接口org.apache.kafka.common.serialization.Serializer spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer #如果該值大于零時,表示啟用重試失敗的發(fā)送次數(shù) spring.kafka.producer.retries #################producer的配置參數(shù)(結(jié)束)################# #################listener的配置參數(shù)(結(jié)束)################# #偵聽器的AckMode,參見https://docs.spring.io/spring-kafka/reference/htmlsingle/#committing-offsets #當(dāng)enable.auto.commit的值設(shè)置為false時,該值會生效;為true時不會生效 spring.kafka.listener.ack-mode; #在偵聽器容器中運(yùn)行的線程數(shù) spring.kafka.listener.concurrency; #輪詢消費(fèi)者時使用的超時(以毫秒為單位) spring.kafka.listener.poll-timeout; #當(dāng)ackMode為“COUNT”或“COUNT_TIME”時,偏移提交之間的記錄數(shù) spring.kafka.listener.ack-count; #當(dāng)ackMode為“TIME”或“COUNT_TIME”時,偏移提交之間的時間(以毫秒為單位) spring.kafka.listener.ack-time; #################listener的配置參數(shù)(結(jié)束)################# |
以下是一個去掉了一些默認(rèn)參數(shù)后的配置:
1
2
3
4
5
6
7
8
|
spring.kafka.bootstrap-servers=172.17.35.141:9092,172.17.41.159:9092,172.17.38.154:9092,172.17.40.60:9092 spring.kafka.consumer.topic=test_topic spring.kafka.consumer.group-id=streamProcesser spring.kafka.consumer.auto-offset-reset=earliest spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/fenglibing/article/details/82117166