Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
*
* @author Stephane Nicoll
* @author Eddú Meléndez
* @author Lasse Wulff
* @since 1.3.3
*/
public final class DefaultJmsListenerContainerFactoryConfigurer {
Expand Down Expand Up @@ -101,6 +102,8 @@ public void configure(DefaultJmsListenerContainerFactory factory, ConnectionFact
Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(this.jmsProperties.isPubSubDomain());
factory.setSubscriptionDurable(this.jmsProperties.isSubscriptionDurable());
factory.setClientId(this.jmsProperties.getClientId());
if (this.transactionManager != null) {
factory.setTransactionManager(this.transactionManager);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
* @author Greg Turnquist
* @author Phillip Webb
* @author Stephane Nicoll
* @author Lasse Wulff
* @since 1.0.0
*/
@ConfigurationProperties(prefix = "spring.jms")
Expand All @@ -42,6 +43,16 @@ public class JmsProperties {
*/
private String jndiName;

/**
* Whether the subscription is durable.
*/
private boolean subscriptionDurable = false;

/**
* Client id of the connection.
*/
private String clientId;

private final Cache cache = new Cache();

private final Listener listener = new Listener();
Expand All @@ -56,6 +67,22 @@ public void setPubSubDomain(boolean pubSubDomain) {
this.pubSubDomain = pubSubDomain;
}

public boolean isSubscriptionDurable() {
return this.subscriptionDurable;
}

public void setSubscriptionDurable(boolean subscriptionDurable) {
this.subscriptionDurable = subscriptionDurable;
}

public String getClientId() {
return this.clientId;
}

public void setClientId(String clientId) {
this.clientId = clientId;
}

public String getJndiName() {
return this.jndiName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
* @author Stephane Nicoll
* @author Aurélien Leboulanger
* @author Eddú Meléndez
* @author Lasse Wulff
*/
class JmsAutoConfigurationTests {

Expand Down Expand Up @@ -144,7 +145,8 @@ void testJmsListenerContainerFactoryWithCustomSettings() {
this.contextRunner.withUserConfiguration(EnableJmsConfiguration.class)
.withPropertyValues("spring.jms.listener.autoStartup=false", "spring.jms.listener.acknowledgeMode=client",
"spring.jms.listener.concurrency=2", "spring.jms.listener.receiveTimeout=2s",
"spring.jms.listener.maxConcurrency=10")
"spring.jms.listener.maxConcurrency=10", "spring.jms.subscription-durable=true",
"spring.jms.client-id=exampleId")
.run(this::testJmsListenerContainerFactoryWithCustomSettings);
}

Expand All @@ -155,6 +157,8 @@ private void testJmsListenerContainerFactoryWithCustomSettings(AssertableApplica
assertThat(container.getConcurrentConsumers()).isEqualTo(2);
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
assertThat(container.isSubscriptionDurable()).isTrue();
assertThat(container.getClientId()).isEqualTo("exampleId");
}

@Test
Expand Down