Azure / Azure/azure-sdk-for-java
I don't think the DefaultServiceBusNamespaceProcessorFactory in the Service Bus SDK can use a shared ServiceBusClientBuilder. Is issue 37932 actually resolved?
- Dominant language
- Java
- Stars
- 2.6k
- Forks
- 2.2k
- Avg merge
- 2d 8h
- Merged PRs (30d)
- 178
Description
**Query/Question**
My question is in reference to the following issue
https://github.com/Azure/azure-sdk-for-java/issues/37932 .
In my shallow opinion it is still not possible to use a shared `ServiceBusClientBuilder `with the `DefaultServiceBusNamespaceProcessorFactory`. The `doCreateProcessor() ` method constructs new `ServiceBusSessionProcessorClientBuilderFactory `instances on each call. The constructor chain then arrives at
```
AbstractServiceBusSubClientBuilderFactory(P properties, List> serviceClientBuilderCustomizers) {
this((ServiceBusClientBuilder)null, properties, serviceClientBuilderCustomizers);
protected AbstractServiceBusSubClientBuilderFactory(ServiceBusClientBuilder serviceBusClientBuilder, P properties, List> serviceBusClientBuilderCustomizers) {
this.properties = properties;
if (serviceBusClientBuilder != null) {
this.serviceBusClientBuilder = serviceBusClientBuilder;
this.shareServiceBusClientBuilder = true;
this.serviceBusClientBuilderFactory = null;
} else {
this.serviceBusClientBuilderFactory = new ServiceBusClientBuilderFactory(properties);
if (serviceBusClientBuilderCustomizers != null) {
ServiceBusClientBuilderFactory var10001 = this.serviceBusClientBuilderFactory;
Objects.requireNonNull(var10001);
serviceBusClientBuilderCustomizers.forEach(var10001::addBuilderCustomizer);
}
this.serviceBusClientBuilder = null;
this.shareServiceBusClientBuilder = false;
}
}
}
```
which just sets `this.serviceBusClientBuilder` to `null`. Thus,
```
protected ServiceBusClientBuilder getServiceBusClientBuilder() {
if (this.serviceBusClientBuilder == null && this.serviceBusClientBuilderFactory != null) {
this.serviceBusClientBuilder = (ServiceBusClientBuilder)this.serviceBusClientBuilderFactory.build();
}
return this.serviceBusClientBuilder;
}
```
will create a new `ServiceBusClientbuilder ` instance.
Since `DefaultServiceBusNamespaceProcessorFactory ` is final, you cannot even inherit it to override `doCreateProcessor()` . What do you think? My objective is to use a shared ServiceBusClientBuilder in order to reduce the number of TCP connections established with ServiceBus. Since I am working with only one namespace, my application should be able to reuse a single TCP connection instead of creating one connection per Sender and per Receiver.
***Why is this not a Bug or a feature Request?***
The referenced issue is marked as completed, but I need clarification on why it is completed.
**Setup (please complete the following information if applicable):**
- Library/Libraries: com.azure.spring.messaging.servicebus.core 6.1.0
**Information Checklist**
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report
- [x] Query Added
- [x] No setup required
Contributor guide
Assessment
This issue has not been assessed yet.