Skip to content

Commit c390add

Browse files
committed
Merge pull request #38817 from BenchmarkingBuffalo
* pr/38817: Add clientId and subscriptionDurable to JmsProperties Closes gh-38817
2 parents 06b41bd + 3928fac commit c390add

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
@@ -36,6 +36,7 @@
3636
* @author Stephane Nicoll
3737
* @author Eddú Meléndez
3838
* @author Vedran Pavic
39+
* @author Lasse Wulff
3940
* @since 1.3.3
4041
*/
4142
public final class DefaultJmsListenerContainerFactoryConfigurer {
@@ -116,6 +117,8 @@ public void configure(DefaultJmsListenerContainerFactory factory, ConnectionFact
116117
Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
117118
factory.setConnectionFactory(connectionFactory);
118119
factory.setPubSubDomain(this.jmsProperties.isPubSubDomain());
120+
factory.setSubscriptionDurable(this.jmsProperties.isSubscriptionDurable());
121+
factory.setClientId(this.jmsProperties.getClientId());
119122
JmsProperties.Listener listenerProperties = this.jmsProperties.getListener();
120123
Session sessionProperties = listenerProperties.getSession();
121124
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();

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
@@ -27,6 +27,7 @@
2727
* @author Greg Turnquist
2828
* @author Phillip Webb
2929
* @author Stephane Nicoll
30+
* @author Lasse Wulff
3031
* @author Vedran Pavic
3132
* @since 1.0.0
3233
*/
@@ -44,6 +45,16 @@ public class JmsProperties {
4445
*/
4546
private String jndiName;
4647

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

4960
private final Listener listener = new Listener();
@@ -58,6 +69,22 @@ public void setPubSubDomain(boolean pubSubDomain) {
5869
this.pubSubDomain = pubSubDomain;
5970
}
6071

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

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
@@ -63,6 +63,7 @@
6363
* @author Aurélien Leboulanger
6464
* @author Eddú Meléndez
6565
* @author Vedran Pavic
66+
* @author Lasse Wulff
6667
*/
6768
class JmsAutoConfigurationTests {
6869

@@ -151,7 +152,8 @@ void testJmsListenerContainerFactoryWithCustomSettings() {
151152
.withPropertyValues("spring.jms.listener.autoStartup=false",
152153
"spring.jms.listener.session.acknowledgeMode=client",
153154
"spring.jms.listener.session.transacted=false", "spring.jms.listener.minConcurrency=2",
154-
"spring.jms.listener.receiveTimeout=2s", "spring.jms.listener.maxConcurrency=10")
155+
"spring.jms.listener.receiveTimeout=2s", "spring.jms.listener.maxConcurrency=10",
156+
"spring.jms.subscription-durable=true", "spring.jms.client-id=exampleId")
155157
.run(this::testJmsListenerContainerFactoryWithCustomSettings);
156158
}
157159

@@ -163,6 +165,8 @@ private void testJmsListenerContainerFactoryWithCustomSettings(AssertableApplica
163165
assertThat(container.getConcurrentConsumers()).isEqualTo(2);
164166
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
165167
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
168+
assertThat(container.isSubscriptionDurable()).isTrue();
169+
assertThat(container.getClientId()).isEqualTo("exampleId");
166170
}
167171

168172
@Test

0 commit comments

Comments
 (0)