Merge pull request #42341 from nosan
* pr/42341: Polish "Add option for configuring max messages per task" Add option for configuring max messages per task Closes gh-42341
This commit is contained in:
@@ -135,6 +135,7 @@ public final class DefaultJmsListenerContainerFactoryConfigurer {
|
||||
map.from(listenerProperties::isAutoStartup).to(factory::setAutoStartup);
|
||||
map.from(listenerProperties::formatConcurrency).to(factory::setConcurrency);
|
||||
map.from(listenerProperties::getReceiveTimeout).as(Duration::toMillis).to(factory::setReceiveTimeout);
|
||||
map.from(listenerProperties::getMaxMessagesPerTask).to(factory::setMaxMessagesPerTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -186,6 +186,13 @@ public class JmsProperties {
|
||||
*/
|
||||
private Duration receiveTimeout = Duration.ofSeconds(1);
|
||||
|
||||
/**
|
||||
* Specify the maximum number of messages to process in one task. By default,
|
||||
* unlimited unless a SchedulingTaskExecutor is configured on the listener (10
|
||||
* messages), as it indicates a preference for short-lived tasks.
|
||||
*/
|
||||
private Integer maxMessagesPerTask;
|
||||
|
||||
private final Session session = new Session();
|
||||
|
||||
public boolean isAutoStartup() {
|
||||
@@ -250,6 +257,14 @@ public class JmsProperties {
|
||||
this.receiveTimeout = receiveTimeout;
|
||||
}
|
||||
|
||||
public Integer getMaxMessagesPerTask() {
|
||||
return this.maxMessagesPerTask;
|
||||
}
|
||||
|
||||
public void setMaxMessagesPerTask(Integer maxMessagesPerTask) {
|
||||
this.maxMessagesPerTask = maxMessagesPerTask;
|
||||
}
|
||||
|
||||
public Session getSession() {
|
||||
return this.session;
|
||||
}
|
||||
|
||||
@@ -176,7 +176,8 @@ class JmsAutoConfigurationTests {
|
||||
"spring.jms.listener.session.acknowledgeMode=client",
|
||||
"spring.jms.listener.session.transacted=false", "spring.jms.listener.minConcurrency=2",
|
||||
"spring.jms.listener.receiveTimeout=2s", "spring.jms.listener.maxConcurrency=10",
|
||||
"spring.jms.subscription-durable=true", "spring.jms.client-id=exampleId")
|
||||
"spring.jms.subscription-durable=true", "spring.jms.client-id=exampleId",
|
||||
"spring.jms.listener.max-messages-per-task=5")
|
||||
.run(this::testJmsListenerContainerFactoryWithCustomSettings);
|
||||
}
|
||||
|
||||
@@ -188,6 +189,7 @@ class JmsAutoConfigurationTests {
|
||||
assertThat(container.getConcurrentConsumers()).isEqualTo(2);
|
||||
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
|
||||
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
|
||||
assertThat(container).hasFieldOrPropertyWithValue("maxMessagesPerTask", 5);
|
||||
assertThat(container.isSubscriptionDurable()).isTrue();
|
||||
assertThat(container.getClientId()).isEqualTo("exampleId");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user