Skip to content

Commit 63e796c

Browse files
committed
Merge pull request #44901 from quaff
* pr/44901: Add 'spring.kafka.consumer.max-poll-interval' configuration property Closes gh-44901
2 parents 617244b + 4e1fa66 commit 63e796c

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java

+18
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
* @author Tomaz Fernandes
6060
* @author Andy Wilkinson
6161
* @author Scott Frederick
62+
* @author Yanming Zhou
6263
* @since 1.5.0
6364
*/
6465
@ConfigurationProperties("spring.kafka")
@@ -337,6 +338,12 @@ public static class Consumer {
337338
*/
338339
private Integer maxPollRecords;
339340

341+
/**
342+
* Maximum delay between invocations of poll() when using consumer group
343+
* management.
344+
*/
345+
private Duration maxPollInterval;
346+
340347
/**
341348
* Additional consumer-specific properties used to configure the client.
342349
*/
@@ -454,6 +461,14 @@ public void setMaxPollRecords(Integer maxPollRecords) {
454461
this.maxPollRecords = maxPollRecords;
455462
}
456463

464+
public Duration getMaxPollInterval() {
465+
return this.maxPollInterval;
466+
}
467+
468+
public void setMaxPollInterval(Duration maxPollInterval) {
469+
this.maxPollInterval = maxPollInterval;
470+
}
471+
457472
public Map<String, String> getProperties() {
458473
return this.properties;
459474
}
@@ -483,6 +498,9 @@ public Map<String, Object> buildProperties(SslBundles sslBundles) {
483498
map.from(this::getKeyDeserializer).to(properties.in(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG));
484499
map.from(this::getValueDeserializer).to(properties.in(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG));
485500
map.from(this::getMaxPollRecords).to(properties.in(ConsumerConfig.MAX_POLL_RECORDS_CONFIG));
501+
map.from(this::getMaxPollInterval)
502+
.asInt(Duration::toMillis)
503+
.to(properties.in(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG));
486504
return properties.with(this.ssl, this.security, this.properties, sslBundles);
487505
}
488506

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
* @author Andy Wilkinson
116116
* @author Phillip Webb
117117
* @author Scott Frederick
118+
* @author Yanming Zhou
118119
*/
119120
class KafkaAutoConfigurationTests {
120121

@@ -132,8 +133,9 @@ void consumerProperties() {
132133
"spring.kafka.ssl.key-store-type=PKCS12", "spring.kafka.ssl.trust-store-location=classpath:tsLoc",
133134
"spring.kafka.ssl.trust-store-password=p3", "spring.kafka.ssl.trust-store-type=PKCS12",
134135
"spring.kafka.ssl.protocol=TLSv1.2", "spring.kafka.consumer.auto-commit-interval=123",
135-
"spring.kafka.consumer.max-poll-records=42", "spring.kafka.consumer.auto-offset-reset=earliest",
136-
"spring.kafka.consumer.client-id=ccid", // test override common
136+
"spring.kafka.consumer.max-poll-records=42", "spring.kafka.consumer.max-poll-interval=30s",
137+
"spring.kafka.consumer.auto-offset-reset=earliest", "spring.kafka.consumer.client-id=ccid",
138+
// test override common
137139
"spring.kafka.consumer.enable-auto-commit=false", "spring.kafka.consumer.fetch-max-wait=456",
138140
"spring.kafka.consumer.properties.fiz.buz=fix.fox", "spring.kafka.consumer.fetch-min-size=1KB",
139141
"spring.kafka.consumer.group-id=bar", "spring.kafka.consumer.heartbeat-interval=234",
@@ -172,6 +174,7 @@ void consumerProperties() {
172174
assertThat(configs).containsEntry(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,
173175
IntegerDeserializer.class);
174176
assertThat(configs).containsEntry(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 42);
177+
assertThat(configs).containsEntry(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 30000);
175178
assertThat(configs).containsEntry("foo", "bar");
176179
assertThat(configs).containsEntry("baz", "qux");
177180
assertThat(configs).containsEntry("foo.bar.baz", "qux.fiz.buz");

0 commit comments

Comments
 (0)