From 539d4bac35953f43228de9d7c5ec8abd6c9a9a59 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 10 Dec 2025 14:37:16 +0800 Subject: [PATCH 1/5] Change default connection factory of JMS listener container to native Service Bus connection factory --- ...eBusJmsConnectionFactoryConfiguration.java | 5 +- .../ServiceBusJmsAutoConfigurationTests.java | 79 ++++++++++--------- 2 files changed, 44 insertions(+), 40 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java index 53e4b15b4f50..f1f26807d1fd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java @@ -61,13 +61,12 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BindResult poolEnabledResult = Binder.get(environment).bind("spring.jms.servicebus.pool.enabled", Boolean.class); BindResult cacheEnabledResult = Binder.get(environment).bind("spring.jms.cache.enabled", Boolean.class); - if (isPoolConnectionFactoryClassPresent() - && ((!cacheEnabledResult.isBound() && !poolEnabledResult.isBound()) || poolEnabledResult.orElseGet(() -> false))) { + if (isPoolConnectionFactoryClassPresent() && poolEnabledResult.orElseGet(() -> false)) { registerJmsPoolConnectionFactory(registry); return; } - if (isCacheConnectionFactoryClassPresent() && (!cacheEnabledResult.isBound() || cacheEnabledResult.orElseGet(() -> false))) { + if (isCacheConnectionFactoryClassPresent() && cacheEnabledResult.orElseGet(() -> false)) { registerJmsCachingConnectionFactory(registry); return; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java index 85d2cb7dda4c..79daceecaf7a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java @@ -3,14 +3,15 @@ package com.azure.spring.cloud.autoconfigure.implementation.jms; +import com.azure.servicebus.jms.ServiceBusJmsConnectionFactory; import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; -import com.azure.servicebus.jms.ServiceBusJmsConnectionFactory; import jakarta.jms.ConnectionFactory; import jakarta.jms.Session; import org.apache.qpid.jms.JmsConnectionFactory; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -60,6 +61,7 @@ private void testQueueJmsListenerContainerFactoryWithCustomSettings(AssertableAp assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10); assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L); assertThat(container.isReplyPubSubDomain()).isFalse(); + Assertions.assertNotNull(container.getReplyQosSettings()); assertThat(container.getReplyQosSettings().getPriority()).isEqualTo(1); assertThat(container.isSubscriptionDurable()).isFalse(); assertThat(container.isSubscriptionShared()).isFalse(); @@ -79,6 +81,7 @@ private void testTopicJmsListenerContainerFactoryWithCustomSettings(AssertableAp assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10); assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L); assertThat(container.isReplyPubSubDomain()).isFalse(); + Assertions.assertNotNull(container.getReplyQosSettings()); assertThat(container.getReplyQosSettings().getPriority()).isEqualTo(1); assertThat(container.isSubscriptionDurable()).isTrue(); assertThat(container.isSubscriptionShared()).isFalse(); @@ -86,7 +89,7 @@ private void testTopicJmsListenerContainerFactoryWithCustomSettings(AssertableAp } @ParameterizedTest - @ValueSource(classes = { ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class }) + @ValueSource(classes = {ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class}) void autoconfigurationNotEnabled(Class clz) { this.contextRunner .withClassLoader(new FilteredClassLoader(clz)) @@ -105,7 +108,7 @@ void contextFailedByConnectionStringNotConfigured() { } @ParameterizedTest - @ValueSource(strings = { "Ba", " ", "basic" }) + @ValueSource(strings = {"Ba", " ", "basic"}) void contextFailedByPricingTierNotCorrectlyConfigured(String pricingTier) { this.contextRunner .withPropertyValues( @@ -119,7 +122,7 @@ void contextFailedByPricingTierNotCorrectlyConfigured(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "premium" }) + @ValueSource(strings = {"premium"}) void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier) { this.contextRunner .withPropertyValues( @@ -138,7 +141,7 @@ void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier } @ParameterizedTest - @ValueSource(strings = { "standard" }) + @ValueSource(strings = {"standard"}) void autoconfigurationEnabledAndContextSuccessWithStandardTier(String pricingTier) { this.contextRunner .withPropertyValues( @@ -157,16 +160,14 @@ void autoconfigurationEnabledAndContextSuccessWithStandardTier(String pricingTie } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void autoconfigurationDisabled(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.enabled=false", "spring.jms.servicebus.pricing-tier=" + pricingTier, "spring.jms.servicebus.connection-string=" + CONNECTION_STRING) - .run(context -> { - assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class); - }); + .run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class)); } @Test @@ -174,25 +175,21 @@ void autoconfigurationDisabledCase2() { this.contextRunner .withPropertyValues( "spring.jms.servicebus.enabled=false") - .run(context -> { - assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class); - }); + .run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class)); } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void doesNotHaveBeanOfAzureServiceBusJmsPropertiesBeanPostProcessor(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier, "spring.jms.servicebus.connection-string=" + CONNECTION_STRING) - .run(context -> { - assertThat(context).doesNotHaveBean(AzureServiceBusJmsPropertiesBeanPostProcessor.class); - }); + .run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusJmsPropertiesBeanPostProcessor.class)); } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void doesHaveBeanOfAzureServiceBusJmsPropertiesBeanPostProcessor(String pricingTier) { this.contextRunner .withPropertyValues( @@ -214,7 +211,7 @@ StaticConnectionStringProvider connectionStringProv } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void connectionFactoryIsAutowiredIntoJmsTemplateBean(String pricingTier) { this.contextRunner .withPropertyValues( @@ -227,7 +224,7 @@ void connectionFactoryIsAutowiredIntoJmsTemplateBean(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void jmsPropertiesConfiguredCorrectly(String pricingTier) { this.contextRunner .withPropertyValues( @@ -251,7 +248,7 @@ void jmsPropertiesConfiguredCorrectly(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void jmsServiceBusPropertiesConfigured(String pricingTier) { this.contextRunner .withPropertyValues( @@ -268,7 +265,7 @@ void jmsServiceBusPropertiesConfigured(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void jmsListenerContainerFactoryConfiguredCorrectly(String pricingTier) { this.contextRunner .withPropertyValues( @@ -289,23 +286,28 @@ void jmsListenerContainerFactoryConfiguredCorrectly(String pricingTier) { }); } - @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) - void jmsPoolConnectionFactoryBeanConfiguredAsDefault(String pricingTier) { + @ValueSource(strings = {"standard", "premium"}) + void nativeConnectionFactoryBeanConfiguredByDefaultInJmsListenerContainerFactory(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier, "spring.jms.servicebus.connection-string=" + CONNECTION_STRING) .run(context -> { - assertThat(context).hasSingleBean(JmsPoolConnectionFactory.class); - assertThat(context).doesNotHaveBean(ServiceBusJmsConnectionFactory.class); + assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class); assertThat(context).doesNotHaveBean(CachingConnectionFactory.class); + assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class); + assertThat(context).getBean("jmsListenerContainerFactory") + .extracting("connectionFactory") + .isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class)); + assertThat(context).getBean("topicJmsListenerContainerFactory") + .extracting("connectionFactory") + .isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class)); }); } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void jmsPoolConnectionFactoryBeanConfiguredExplicitly(String pricingTier) { this.contextRunner .withPropertyValues( @@ -322,7 +324,7 @@ void jmsPoolConnectionFactoryBeanConfiguredExplicitly(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheEnable(String pricingTier) { this.contextRunner .withPropertyValues( @@ -340,7 +342,7 @@ void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheEnable(String pricin } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheDisable(String pricingTier) { this.contextRunner .withPropertyValues( @@ -358,7 +360,7 @@ void jmsPoolConnectionFactoryBeanConfiguredByPoolEnableCacheDisable(String prici } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void cachingConnectionFactoryBeanConfiguredByCacheEnable(String pricingTier) { this.contextRunner .withPropertyValues( @@ -374,7 +376,7 @@ void cachingConnectionFactoryBeanConfiguredByCacheEnable(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void cachingConnectionFactoryBeanConfiguredByPoolDisableCacheEnable(String pricingTier) { this.contextRunner .withPropertyValues( @@ -391,8 +393,8 @@ void cachingConnectionFactoryBeanConfiguredByPoolDisableCacheEnable(String prici } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) - void cachingConnectionFactoryBeanConfiguredByPoolDisable(String pricingTier) { + @ValueSource(strings = {"standard", "premium"}) + void nativeConnectionFactoryBeanConfiguredByPoolDisable(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier, @@ -400,14 +402,14 @@ void cachingConnectionFactoryBeanConfiguredByPoolDisable(String pricingTier) { "spring.jms.servicebus.pool.enabled=false" ) .run(context -> { - assertThat(context).hasSingleBean(CachingConnectionFactory.class); - assertThat(context).doesNotHaveBean(ServiceBusJmsConnectionFactory.class); + assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class); + assertThat(context).doesNotHaveBean(CachingConnectionFactory.class); assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class); }); } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void nativeConnectionFactoryBeanConfiguredByCacheDisable(String pricingTier) { this.contextRunner .withPropertyValues( @@ -424,7 +426,7 @@ void nativeConnectionFactoryBeanConfiguredByCacheDisable(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "standard", "premium" }) + @ValueSource(strings = {"standard", "premium"}) void nativeConnectionFactoryBeanConfiguredByPoolDisableCacheDisable(String pricingTier) { this.contextRunner .withPropertyValues( @@ -437,6 +439,9 @@ void nativeConnectionFactoryBeanConfiguredByPoolDisableCacheDisable(String prici assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class); assertThat(context).doesNotHaveBean(CachingConnectionFactory.class); assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class); + assertThat(context).getBean("jmsListenerContainerFactory") + .extracting("connectionFactory") + .isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class)); } ); } From cf6f10af6cf2e9ee7fedb4b66ce45418f6203a55 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 10 Dec 2025 14:40:58 +0800 Subject: [PATCH 2/5] Update CHANGELOG.md --- sdk/spring/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index 4447d6f30c75..4ff1fd471067 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -5,6 +5,10 @@ ### Spring Cloud Azure Autoconfigure This section includes changes in `spring-cloud-azure-autoconfigure` module. +#### Features Added + +- Change default connection factory of JMS listener container to native Service Bus connection factory. [#47413](https://github.com/Azure/azure-sdk-for-java/issues/47413) + #### Bugs Fixed - 2 `TokenCredential` bean found in AzureServiceBusMessagingAutoConfiguration. [#47470](https://github.com/Azure/azure-sdk-for-java/pull/47470) From 7ebb88b7ebdae74e49650555cb4056a45e66c16e Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 10 Dec 2025 15:15:10 +0800 Subject: [PATCH 3/5] Use assertThat().isNotNull() instead of Assertions.assertNotNull() for consistency --- .../jms/ServiceBusJmsAutoConfigurationTests.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java index 79daceecaf7a..3e8fb00e0ba3 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java @@ -11,7 +11,6 @@ import jakarta.jms.ConnectionFactory; import jakarta.jms.Session; import org.apache.qpid.jms.JmsConnectionFactory; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -61,7 +60,7 @@ private void testQueueJmsListenerContainerFactoryWithCustomSettings(AssertableAp assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10); assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L); assertThat(container.isReplyPubSubDomain()).isFalse(); - Assertions.assertNotNull(container.getReplyQosSettings()); + assertThat(container.getReplyQosSettings()).isNotNull(); assertThat(container.getReplyQosSettings().getPriority()).isEqualTo(1); assertThat(container.isSubscriptionDurable()).isFalse(); assertThat(container.isSubscriptionShared()).isFalse(); @@ -81,7 +80,7 @@ private void testTopicJmsListenerContainerFactoryWithCustomSettings(AssertableAp assertThat(container.getMaxConcurrentConsumers()).isEqualTo(10); assertThat(container).hasFieldOrPropertyWithValue("receiveTimeout", 2000L); assertThat(container.isReplyPubSubDomain()).isFalse(); - Assertions.assertNotNull(container.getReplyQosSettings()); + assertThat(container.getReplyQosSettings()).isNotNull(); assertThat(container.getReplyQosSettings().getPriority()).isEqualTo(1); assertThat(container.isSubscriptionDurable()).isTrue(); assertThat(container.isSubscriptionShared()).isFalse(); From 88ab1577b407ae5499562585979c379f66f77c11 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 10 Dec 2025 15:52:08 +0800 Subject: [PATCH 4/5] Update tests. --- .../ServiceBusJmsAutoConfigurationTests.java | 9 ---- ...msConnectionFactoryConfigurationTests.java | 47 +++++-------------- 2 files changed, 11 insertions(+), 45 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java index 3e8fb00e0ba3..ca0025ea6ed5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java @@ -296,12 +296,6 @@ void nativeConnectionFactoryBeanConfiguredByDefaultInJmsListenerContainerFactory assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class); assertThat(context).doesNotHaveBean(CachingConnectionFactory.class); assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class); - assertThat(context).getBean("jmsListenerContainerFactory") - .extracting("connectionFactory") - .isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class)); - assertThat(context).getBean("topicJmsListenerContainerFactory") - .extracting("connectionFactory") - .isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class)); }); } @@ -438,9 +432,6 @@ void nativeConnectionFactoryBeanConfiguredByPoolDisableCacheDisable(String prici assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class); assertThat(context).doesNotHaveBean(CachingConnectionFactory.class); assertThat(context).doesNotHaveBean(JmsPoolConnectionFactory.class); - assertThat(context).getBean("jmsListenerContainerFactory") - .extracting("connectionFactory") - .isSameAs(context.getBean(ServiceBusJmsConnectionFactory.class)); } ); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java index 1e58a992365c..145561a929b1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java @@ -48,9 +48,7 @@ void useDefaultPoolConnection(String pricingTier) { .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier ) - .run(context -> { - assertThat(context).hasSingleBean(JmsPoolConnectionFactory.class); - }); + .run(context -> assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class)); } @ParameterizedTest @@ -61,36 +59,18 @@ void enablePoolConnection(String pricingTier) { "spring.jms.servicebus.pricing-tier=" + pricingTier, "spring.jms.servicebus.pool.enabled=true" ) - .run(context -> { - assertThat(context).hasSingleBean(JmsPoolConnectionFactory.class); - }); + .run(context -> assertThat(context).hasSingleBean(JmsPoolConnectionFactory.class)); } @ParameterizedTest @ValueSource(strings = { "org.messaginghub.pooled.jms.JmsPoolConnectionFactory", "org.apache.commons.pool2.PooledObject" }) - void poolEnabledButNoPoolClasses(String poolClass) { - this.contextRunner - .withClassLoader(new FilteredClassLoader(poolClass)) - .withPropertyValues( - "spring.jms.servicebus.pricing-tier=premium", - "spring.jms.servicebus.pool.enabled=true" - ) - .run(context -> { - assertThat(context).hasSingleBean(CachingConnectionFactory.class); - }); - } - - @ParameterizedTest - @ValueSource(strings = { "org.messaginghub.pooled.jms.JmsPoolConnectionFactory", "org.apache.commons.pool2.PooledObject" }) - void fallbackUseCachingConnectionDueNoPoolClasses(String poolClass) { + void fallbackDefaultJmsConnectionDueNoPoolClasses(String poolClass) { this.contextRunner .withClassLoader(new FilteredClassLoader(poolClass)) .withPropertyValues( "spring.jms.servicebus.pricing-tier=premium" ) - .run(context -> { - assertThat(context).hasSingleBean(CachingConnectionFactory.class); - }); + .run(context -> assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class)); } @ParameterizedTest @@ -99,11 +79,9 @@ void useCacheConnection(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier, - "spring.jms.servicebus.pool.enabled=false" + "spring.jms.cache.enabled=true" ) - .run(context -> { - assertThat(context).hasSingleBean(CachingConnectionFactory.class); - }); + .run(context -> assertThat(context).hasSingleBean(CachingConnectionFactory.class)); } @ParameterizedTest @@ -134,9 +112,7 @@ void useServiceBusJmsConnection(String pricingTier) { "spring.jms.servicebus.pool.enabled=false", "spring.jms.cache.enabled=false" ) - .run(context -> { - assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class); - }); + .run(context -> assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactory.class)); } @ParameterizedTest @@ -145,11 +121,10 @@ void useCacheConnectionViaAdditionConfigurationFile(String pricingTier) { this.contextRunner .withConfiguration(AutoConfigurations.of(AdditionalPropertySourceConfiguration.class)) .withPropertyValues( - "spring.jms.servicebus.pricing-tier=" + pricingTier + "spring.jms.servicebus.pricing-tier=" + pricingTier, + "spring.jms.cache.enabled=true" ) - .run(context -> { - assertThat(context).hasSingleBean(CachingConnectionFactory.class); - }); + .run(context -> assertThat(context).hasSingleBean(CachingConnectionFactory.class)); } @Test @@ -232,7 +207,7 @@ void cachingConnectionFactoryReusesSameProducerForSameDestination() throws Excep // Cleanup connection.close(); } - + /** * Creates a ServiceBusJmsSession instance using reflection since the constructor is package-private. */ From cfcd8c8d3e16fd01a3845acd343d13a2de561c8d Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Mon, 15 Dec 2025 14:32:03 +0800 Subject: [PATCH 5/5] Fix test method error in ServiceBusJmsConnectionFactoryConfigurationTests --- .../jms/ServiceBusJmsConnectionFactoryConfigurationTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java index 145561a929b1..2fe44abbb1ff 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfigurationTests.java @@ -43,7 +43,7 @@ class ServiceBusJmsConnectionFactoryConfigurationTests { @ParameterizedTest @ValueSource(strings = { "standard", "premium" }) - void useDefaultPoolConnection(String pricingTier) { + void useDefaultNativeConnection(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier