Add option for configuring max messages per task
See gh-42341
This commit is contained in:
parent
e133ea3dfc
commit
09b57eff76
|
@ -135,6 +135,7 @@ public final class DefaultJmsListenerContainerFactoryConfigurer {
|
||||||
map.from(listenerProperties::isAutoStartup).to(factory::setAutoStartup);
|
map.from(listenerProperties::isAutoStartup).to(factory::setAutoStartup);
|
||||||
map.from(listenerProperties::formatConcurrency).to(factory::setConcurrency);
|
map.from(listenerProperties::formatConcurrency).to(factory::setConcurrency);
|
||||||
map.from(listenerProperties::getReceiveTimeout).as(Duration::toMillis).to(factory::setReceiveTimeout);
|
map.from(listenerProperties::getReceiveTimeout).as(Duration::toMillis).to(factory::setReceiveTimeout);
|
||||||
|
map.from(listenerProperties::getMaxMessagesPerTask).to(factory::setMaxMessagesPerTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,6 +186,11 @@ public class JmsProperties {
|
||||||
*/
|
*/
|
||||||
private Duration receiveTimeout = Duration.ofSeconds(1);
|
private Duration receiveTimeout = Duration.ofSeconds(1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the maximum number of messages to process in one task.
|
||||||
|
*/
|
||||||
|
private Integer maxMessagesPerTask;
|
||||||
|
|
||||||
private final Session session = new Session();
|
private final Session session = new Session();
|
||||||
|
|
||||||
public boolean isAutoStartup() {
|
public boolean isAutoStartup() {
|
||||||
|
@ -250,6 +255,14 @@ public class JmsProperties {
|
||||||
this.receiveTimeout = receiveTimeout;
|
this.receiveTimeout = receiveTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getMaxMessagesPerTask() {
|
||||||
|
return this.maxMessagesPerTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxMessagesPerTask(Integer maxMessagesPerTask) {
|
||||||
|
this.maxMessagesPerTask = maxMessagesPerTask;
|
||||||
|
}
|
||||||
|
|
||||||
public Session getSession() {
|
public Session getSession() {
|
||||||
return this.session;
|
return this.session;
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,7 +176,8 @@ class JmsAutoConfigurationTests {
|
||||||
"spring.jms.listener.session.acknowledgeMode=client",
|
"spring.jms.listener.session.acknowledgeMode=client",
|
||||||
"spring.jms.listener.session.transacted=false", "spring.jms.listener.minConcurrency=2",
|
"spring.jms.listener.session.transacted=false", "spring.jms.listener.minConcurrency=2",
|
||||||
"spring.jms.listener.receiveTimeout=2s", "spring.jms.listener.maxConcurrency=10",
|
"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=10")
|
||||||
.run(this::testJmsListenerContainerFactoryWithCustomSettings);
|
.run(this::testJmsListenerContainerFactoryWithCustomSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,6 +189,7 @@ class JmsAutoConfigurationTests {
|
||||||
assertThat(container.getConcurrentConsumers()).isEqualTo(2);
|
assertThat(container.getConcurrentConsumers()).isEqualTo(2);
|
||||||
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
|
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
|
||||||
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
|
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
|
||||||
|
assertThat(container).hasFieldOrPropertyWithValue("maxMessagesPerTask", 10);
|
||||||
assertThat(container.isSubscriptionDurable()).isTrue();
|
assertThat(container.isSubscriptionDurable()).isTrue();
|
||||||
assertThat(container.getClientId()).isEqualTo("exampleId");
|
assertThat(container.getClientId()).isEqualTo("exampleId");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue