Skip to content

Commit 539d4ba

Browse files
committed
Change default connection factory of JMS listener container to native Service Bus connection factory
1 parent 57c2f31 commit 539d4ba

File tree

2 files changed

+44
-40
lines changed

2 files changed

+44
-40
lines changed

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,12 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
6161
BindResult<Boolean> poolEnabledResult = Binder.get(environment).bind("spring.jms.servicebus.pool.enabled", Boolean.class);
6262
BindResult<Boolean> cacheEnabledResult = Binder.get(environment).bind("spring.jms.cache.enabled", Boolean.class);
6363

64-
if (isPoolConnectionFactoryClassPresent()
65-
&& ((!cacheEnabledResult.isBound() && !poolEnabledResult.isBound()) || poolEnabledResult.orElseGet(() -> false))) {
64+
if (isPoolConnectionFactoryClassPresent() && poolEnabledResult.orElseGet(() -> false)) {
6665
registerJmsPoolConnectionFactory(registry);
6766
return;
6867
}
6968

70-
if (isCacheConnectionFactoryClassPresent() && (!cacheEnabledResult.isBound() || cacheEnabledResult.orElseGet(() -> false))) {
69+
if (isCacheConnectionFactoryClassPresent() && cacheEnabledResult.orElseGet(() -> false)) {
7170
registerJmsCachingConnectionFactory(registry);
7271
return;
7372
}

sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33

44
package com.azure.spring.cloud.autoconfigure.implementation.jms;
55

6+
import com.azure.servicebus.jms.ServiceBusJmsConnectionFactory;
67
import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties;
78
import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties;
89
import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider;
910
import com.azure.spring.cloud.core.service.AzureServiceType;
10-
import com.azure.servicebus.jms.ServiceBusJmsConnectionFactory;
1111
import jakarta.jms.ConnectionFactory;
1212
import jakarta.jms.Session;
1313
import org.apache.qpid.jms.JmsConnectionFactory;
14+
import org.junit.jupiter.api.Assertions;
1415
import org.junit.jupiter.api.Test;
1516
import org.junit.jupiter.params.ParameterizedTest;
1617
import org.junit.jupiter.params.provider.ValueSource;
@@ -60,6 +61,7 @@ private void testQueueJmsListenerContainerFactoryWithCustomSettings(AssertableAp
6061
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
6162
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
6263
assertThat(container.isReplyPubSubDomain()).isFalse();
64+
Assertions.assertNotNull(container.getReplyQosSettings());
6365
assertThat(container.getReplyQosSettings().getPriority()).isEqualTo(1);
6466
assertThat(container.isSubscriptionDurable()).isFalse();
6567
assertThat(container.isSubscriptionShared()).isFalse();
@@ -79,14 +81,15 @@ private void testTopicJmsListenerContainerFactoryWithCustomSettings(AssertableAp
7981
assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10);
8082
assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L);
8183
assertThat(container.isReplyPubSubDomain()).isFalse();
84+
Assertions.assertNotNull(container.getReplyQosSettings());
8285
assertThat(container.getReplyQosSettings().getPriority()).isEqualTo(1);
8386
assertThat(container.isSubscriptionDurable()).isTrue();
8487
assertThat(container.isSubscriptionShared()).isFalse();
8588
assertThat(container.getPhase()).isEqualTo(2147483647);
8689
}
8790

8891
@ParameterizedTest
89-
@ValueSource(classes = { ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class })
92+
@ValueSource(classes = {ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class})
9093
void autoconfigurationNotEnabled(Class<?> clz) {
9194
this.contextRunner
9295
.withClassLoader(new FilteredClassLoader(clz))
@@ -105,7 +108,7 @@ void contextFailedByConnectionStringNotConfigured() {
105108
}
106109

107110
@ParameterizedTest
108-
@ValueSource(strings = { "Ba", " ", "basic" })
111+
@ValueSource(strings = {"Ba", " ", "basic"})
109112
void contextFailedByPricingTierNotCorrectlyConfigured(String pricingTier) {
110113
this.contextRunner
111114
.withPropertyValues(
@@ -119,7 +122,7 @@ void contextFailedByPricingTierNotCorrectlyConfigured(String pricingTier) {
119122
}
120123

121124
@ParameterizedTest
122-
@ValueSource(strings = { "premium" })
125+
@ValueSource(strings = {"premium"})
123126
void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier) {
124127
this.contextRunner
125128
.withPropertyValues(
@@ -138,7 +141,7 @@ void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier
138141
}
139142

140143
@ParameterizedTest
141-
@ValueSource(strings = { "standard" })
144+
@ValueSource(strings = {"standard"})
142145
void autoconfigurationEnabledAndContextSuccessWithStandardTier(String pricingTier) {
143146
this.contextRunner
144147
.withPropertyValues(
@@ -157,42 +160,36 @@ void autoconfigurationEnabledAndContextSuccessWithStandardTier(String pricingTie
157160
}
158161

159162
@ParameterizedTest
160-
@ValueSource(strings = { "standard", "premium" })
163+
@ValueSource(strings = {"standard", "premium"})
161164
void autoconfigurationDisabled(String pricingTier) {
162165
this.contextRunner
163166
.withPropertyValues(
164167
"spring.jms.servicebus.enabled=false",
165168
"spring.jms.servicebus.pricing-tier=" + pricingTier,
166169
"spring.jms.servicebus.connection-string=" + CONNECTION_STRING)
167-
.run(context -> {
168-
assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class);
169-
});
170+
.run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class));
170171
}
171172

172173
@Test
173174
void autoconfigurationDisabledCase2() {
174175
this.contextRunner
175176
.withPropertyValues(
176177
"spring.jms.servicebus.enabled=false")
177-
.run(context -> {
178-
assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class);
179-
});
178+
.run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class));
180179
}
181180

182181
@ParameterizedTest
183-
@ValueSource(strings = { "standard", "premium" })
182+
@ValueSource(strings = {"standard", "premium"})
184183
void doesNotHaveBeanOfAzureServiceBusJmsPropertiesBeanPostProcessor(String pricingTier) {
185184
this.contextRunner
186185
.withPropertyValues(
187186
"spring.jms.servicebus.pricing-tier=" + pricingTier,
188187
"spring.jms.servicebus.connection-string=" + CONNECTION_STRING)
189-
.run(context -> {
190-
assertThat(context).doesNotHaveBean(AzureServiceBusJmsPropertiesBeanPostProcessor.class);
191-
});
188+
.run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusJmsPropertiesBeanPostProcessor.class));
192189
}
193190

194191
@ParameterizedTest
195-
@ValueSource(strings = { "standard", "premium" })
192+
@ValueSource(strings = {"standard", "premium"})
196193
void doesHaveBeanOfAzureServiceBusJmsPropertiesBeanPostProcessor(String pricingTier) {
197194
this.contextRunner
198195
.withPropertyValues(
@@ -214,7 +211,7 @@ StaticConnectionStringProvider<AzureServiceType.ServiceBus> connectionStringProv
214211
}
215212

216213
@ParameterizedTest
217-
@ValueSource(strings = { "standard", "premium" })
214+
@ValueSource(strings = {"standard", "premium"})
218215
void connectionFactoryIsAutowiredIntoJmsTemplateBean(String pricingTier) {
219216
this.contextRunner
220217
.withPropertyValues(
@@ -227,7 +224,7 @@ void connectionFactoryIsAutowiredIntoJmsTemplateBean(String pricingTier) {
227224
}
228225

229226
@ParameterizedTest
230-
@ValueSource(strings = { "standard", "premium" })
227+
@ValueSource(strings = {"standard", "premium"})
231228
void jmsPropertiesConfiguredCorrectly(String pricingTier) {
232229
this.contextRunner
233230
.withPropertyValues(
@@ -251,7 +248,7 @@ void jmsPropertiesConfiguredCorrectly(String pricingTier) {
251248
}
252249

253250
@ParameterizedTest
254-
@ValueSource(strings = { "standard", "premium" })
251+
@ValueSource(strings = {"standard", "premium"})
255252
void jmsServiceBusPropertiesConfigured(String pricingTier) {
256253
this.contextRunner
257254
.withPropertyValues(
@@ -268,7 +265,7 @@ void jmsServiceBusPropertiesConfigured(String pricingTier) {
268265
}
269266

270267
@ParameterizedTest
271-
@ValueSource(strings = { "standard", "premium" })
268+
@ValueSource(strings = {"standard", "premium"})
272269
void jmsListenerContainerFactoryConfiguredCorrectly(String pricingTier) {
273270
this.contextRunner
274271
.withPropertyValues(
@@ -289,23 +286,28 @@ void jmsListenerContainerFactoryConfiguredCorrectly(String pricingTier) {
289286
});
290287
}
291288

292-
293289
@ParameterizedTest
294-
@ValueSource(strings = { "standard", "premium" })
295-
void jmsPoolConnectionFactoryBeanConfiguredAsDefault(String pricingTier) {
290+
@ValueSource(strings = {"standard", "premium"})
291+
void nativeConnectionFactoryBeanConfiguredByDefaultInJmsListenerContainerFactory(String pricingTier) {
296292
this.contextRunner
297293
.withPropertyValues(
298294
"spring.jms.servicebus.pricing-tier=" + pricingTier,
299295
"spring.jms.servicebus.connection-string=" + CONNECTION_STRING)
300296
.run(context -> {
301-
assertThat(context).hasSingleBean(JmsPoolConnectionFactory.class);
302-
assertThat(context).doesNotHaveBean(ServiceBusJmsConnectionFactory.class);
297+
assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class);
303298
assertThat(context).doesNotHaveBean(CachingConnectionFactory.class);
299+
assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class);
300+
assertThat(context).getBean("jmsListenerContainerFactory")
301+
.extracting("connectionFactory")
302+
.isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class));
303+
assertThat(context).getBean("topicJmsListenerContainerFactory")
304+
.extracting("connectionFactory")
305+
.isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class));
304306
});
305307
}
306308

307309
@ParameterizedTest
308-
@ValueSource(strings = { "standard", "premium" })
310+
@ValueSource(strings = {"standard", "premium"})
309311
void jmsPoolConnectionFactoryBeanConfiguredExplicitly(String pricingTier) {
310312
this.contextRunner
311313
.withPropertyValues(
@@ -322,7 +324,7 @@ void jmsPoolConnectionFactoryBeanConfiguredExplicitly(String pricingTier) {
322324
}
323325

324326
@ParameterizedTest
325-
@ValueSource(strings = { "standard", "premium" })
327+
@ValueSource(strings = {"standard", "premium"})
326328
void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheEnable(String pricingTier) {
327329
this.contextRunner
328330
.withPropertyValues(
@@ -340,7 +342,7 @@ void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheEnable(String pricin
340342
}
341343

342344
@ParameterizedTest
343-
@ValueSource(strings = { "standard", "premium" })
345+
@ValueSource(strings = {"standard", "premium"})
344346
void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheDisable(String pricingTier) {
345347
this.contextRunner
346348
.withPropertyValues(
@@ -358,7 +360,7 @@ void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheDisable(String prici
358360
}
359361

360362
@ParameterizedTest
361-
@ValueSource(strings = { "standard", "premium" })
363+
@ValueSource(strings = {"standard", "premium"})
362364
void cachingConnectionFactoryBeanConfiguredByCacheEnable(String pricingTier) {
363365
this.contextRunner
364366
.withPropertyValues(
@@ -374,7 +376,7 @@ void cachingConnectionFactoryBeanConfiguredByCacheEnable(String pricingTier) {
374376
}
375377

376378
@ParameterizedTest
377-
@ValueSource(strings = { "standard", "premium" })
379+
@ValueSource(strings = {"standard", "premium"})
378380
void cachingConnectionFactoryBeanConfiguredByPoolDisableCacheEnable(String pricingTier) {
379381
this.contextRunner
380382
.withPropertyValues(
@@ -391,23 +393,23 @@ void cachingConnectionFactoryBeanConfiguredByPoolDisableCacheEnable(String prici
391393
}
392394

393395
@ParameterizedTest
394-
@ValueSource(strings = { "standard", "premium" })
395-
void cachingConnectionFactoryBeanConfiguredByPoolDisable(String pricingTier) {
396+
@ValueSource(strings = {"standard", "premium"})
397+
void nativeConnectionFactoryBeanConfiguredByPoolDisable(String pricingTier) {
396398
this.contextRunner
397399
.withPropertyValues(
398400
"spring.jms.servicebus.pricing-tier=" + pricingTier,
399401
"spring.jms.servicebus.connection-string=" + CONNECTION_STRING,
400402
"spring.jms.servicebus.pool.enabled=false"
401403
)
402404
.run(context -> {
403-
assertThat(context).hasSingleBean(CachingConnectionFactory.class);
404-
assertThat(context).doesNotHaveBean(ServiceBusJmsConnectionFactory.class);
405+
assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class);
406+
assertThat(context).doesNotHaveBean(CachingConnectionFactory.class);
405407
assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class);
406408
});
407409
}
408410

409411
@ParameterizedTest
410-
@ValueSource(strings = { "standard", "premium" })
412+
@ValueSource(strings = {"standard", "premium"})
411413
void nativeConnectionFactoryBeanConfiguredByCacheDisable(String pricingTier) {
412414
this.contextRunner
413415
.withPropertyValues(
@@ -424,7 +426,7 @@ void nativeConnectionFactoryBeanConfiguredByCacheDisable(String pricingTier) {
424426
}
425427

426428
@ParameterizedTest
427-
@ValueSource(strings = { "standard", "premium" })
429+
@ValueSource(strings = {"standard", "premium"})
428430
void nativeConnectionFactoryBeanConfiguredByPoolDisableCacheDisable(String pricingTier) {
429431
this.contextRunner
430432
.withPropertyValues(
@@ -437,6 +439,9 @@ void nativeConnectionFactoryBeanConfiguredByPoolDisableCacheDisable(String prici
437439
assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class);
438440
assertThat(context).doesNotHaveBean(CachingConnectionFactory.class);
439441
assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class);
442+
assertThat(context).getBean("jmsListenerContainerFactory")
443+
.extracting("connectionFactory")
444+
.isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class));
440445
}
441446
);
442447
}

0 commit comments

Comments
 (0)