Skip to content

Commit 9595ece

Browse files
Add clientId and subscriptionDurable to JmsProperties
see gh-38738
1 parent 4699923 commit 9595ece

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/DefaultJmsListenerContainerFactoryConfigurer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
*
3333
* @author Stephane Nicoll
3434
* @author Eddú Meléndez
35+
* @author Lasse Wulff
3536
* @since 1.3.3
3637
*/
3738
public final class DefaultJmsListenerContainerFactoryConfigurer {
@@ -101,6 +102,8 @@ public void configure(DefaultJmsListenerContainerFactory factory, ConnectionFact
101102
Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
102103
factory.setConnectionFactory(connectionFactory);
103104
factory.setPubSubDomain(this.jmsProperties.isPubSubDomain());
105+
factory.setSubscriptionDurable(this.jmsProperties.isSubscriptionDurable());
106+
factory.setClientId(this.jmsProperties.getClientId());
104107
if (this.transactionManager != null) {
105108
factory.setTransactionManager(this.transactionManager);
106109
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsProperties.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
* @author Greg Turnquist
2727
* @author Phillip Webb
2828
* @author Stephane Nicoll
29+
* @author Lasse Wulff
2930
* @since 1.0.0
3031
*/
3132
@ConfigurationProperties(prefix = "spring.jms")
@@ -42,6 +43,16 @@ public class JmsProperties {
4243
*/
4344
private String jndiName;
4445

46+
/**
47+
* Whether the subscription is durable.
48+
*/
49+
private boolean subscriptionDurable = false;
50+
51+
/**
52+
* Client id of the connection.
53+
*/
54+
private String clientId;
55+
4556
private final Cache cache = new Cache();
4657

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

70+
public boolean isSubscriptionDurable() {
71+
return this.subscriptionDurable;
72+
}
73+
74+
public void setSubscriptionDurable(boolean subscriptionDurable) {
75+
this.subscriptionDurable = subscriptionDurable;
76+
}
77+
78+
public String getClientId() {
79+
return this.clientId;
80+
}
81+
82+
public void setClientId(String clientId) {
83+
this.clientId = clientId;
84+
}
85+
5986
public String getJndiName() {
6087
return this.jndiName;
6188
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
* @author Stephane Nicoll
5858
* @author Aurélien Leboulanger
5959
* @author Eddú Meléndez
60+
* @author Lasse Wulff
6061
*/
6162
class JmsAutoConfigurationTests {
6263

@@ -144,7 +145,8 @@ void testJmsListenerContainerFactoryWithCustomSettings() {
144145
this.contextRunner.withUserConfiguration(EnableJmsConfiguration.class)
145146
.withPropertyValues("spring.jms.listener.autoStartup=false", "spring.jms.listener.acknowledgeMode=client",
146147
"spring.jms.listener.concurrency=2", "spring.jms.listener.receiveTimeout=2s",
147-
"spring.jms.listener.maxConcurrency=10")
148+
"spring.jms.listener.maxConcurrency=10", "spring.jms.subscription-durable=true",
149+
"spring.jms.client-id=exampleId")
148150
.run(this::testJmsListenerContainerFactoryWithCustomSettings);
149151
}
150152

@@ -155,6 +157,8 @@ private void testJmsListenerContainerFactoryWithCustomSettings(AssertableApplica
155157
assertThat(container.getConcurrentConsumers()).isEqualTo(2);
156158
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
157159
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
160+
assertThat(container.isSubscriptionDurable()).isTrue();
161+
assertThat(container.getClientId()).isEqualTo("exampleId");
158162
}
159163

160164
@Test

0 commit comments

Comments
 (0)