Skip to content

Commit e519306

Browse files
Copilotrujche
andauthored
Fix Service Bus autoconfiguration for dedicated sub-client connection details
Agent-Logs-Url: https://github.com/Azure/azure-sdk-for-java/sessions/46f525ea-fb3b-4a1a-a68b-1699ceb5be19 Co-authored-by: rujche <171773178+rujche@users.noreply.github.com>
1 parent 0e057a0 commit e519306

3 files changed

Lines changed: 30 additions & 2 deletions

File tree

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfiguration.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.springframework.context.annotation.Bean;
2222
import org.springframework.context.annotation.Configuration;
2323
import org.springframework.context.annotation.Import;
24+
import org.springframework.util.StringUtils;
2425

2526
@Configuration(proxyBeanMethods = false)
2627
@Import(AzureServiceBusPropertiesConfiguration.class)
@@ -50,7 +51,14 @@ ServiceBusClientBuilderFactory serviceBusClientBuilderFactory(
5051

5152
@Bean
5253
@ConditionalOnMissingBean
53-
ServiceBusClientBuilder serviceBusClientBuilder(ServiceBusClientBuilderFactory factory) {
54+
ServiceBusClientBuilder serviceBusClientBuilder(
55+
ServiceBusClientBuilderFactory factory,
56+
ObjectProvider<ServiceConnectionStringProvider<AzureServiceType.ServiceBus>> connectionStringProviders) {
57+
if (!StringUtils.hasText(this.serviceBusProperties.getConnectionString())
58+
&& !StringUtils.hasText(this.serviceBusProperties.getNamespace())
59+
&& connectionStringProviders.orderedStream().findFirst().isEmpty()) {
60+
return new ServiceBusClientBuilder();
61+
}
5462
return factory.build();
5563
}
5664

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/ConfigurationWithoutConnectionDetailsBean.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@
1313

1414
@ConditionalOnMissingBean(type = "com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusConnectionDetails")
1515
@ConditionalOnProperty(value = "spring.cloud.azure.servicebus.enabled", havingValue = "true", matchIfMissing = true)
16-
@ConditionalOnAnyProperty(prefix = "spring.cloud.azure.servicebus", name = {"connection-string", "namespace"})
16+
@ConditionalOnAnyProperty(prefix = "spring.cloud.azure.servicebus",
17+
name = {"connection-string", "namespace",
18+
"producer.connection-string", "producer.namespace",
19+
"consumer.connection-string", "consumer.namespace",
20+
"processor.connection-string", "processor.namespace"})
1721
class ConfigurationWithoutConnectionDetailsBean {
1822

1923
private final AzureGlobalProperties azureGlobalProperties;

sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfigurationTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import com.azure.core.amqp.AmqpTransportType;
77
import com.azure.messaging.servicebus.ServiceBusClientBuilder;
8+
import com.azure.messaging.servicebus.ServiceBusSenderClient;
89
import com.azure.messaging.servicebus.models.ServiceBusReceiveMode;
910
import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests;
1011
import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties;
@@ -158,6 +159,21 @@ void configureRetryShouldApply() {
158159
});
159160
}
160161

162+
@Test
163+
void producerDedicatedConnectionStringShouldConfigureWithoutTopLevelConnectionInfo() {
164+
this.contextRunner
165+
.withPropertyValues(
166+
"spring.cloud.azure.servicebus.producer.connection-string=" + String.format(CONNECTION_STRING_FORMAT, "producer-namespace"),
167+
"spring.cloud.azure.servicebus.producer.entity-name=test-queue",
168+
"spring.cloud.azure.servicebus.producer.entity-type=queue"
169+
)
170+
.withBean(AzureGlobalProperties.class, AzureGlobalProperties::new)
171+
.run(context -> {
172+
assertThat(context).hasSingleBean(AzureServiceBusProperties.class);
173+
assertThat(context).hasSingleBean(ServiceBusSenderClient.class);
174+
});
175+
}
176+
161177
@Test
162178
void configurationPropertiesShouldBind() {
163179
String connectionString = String.format(CONNECTION_STRING_FORMAT, "fake-namespace");

0 commit comments

Comments
 (0)