-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Description
Query/Question
My question is in reference to the following issue
#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<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder>> serviceClientBuilderCustomizers) {
this((ServiceBusClientBuilder)null, properties, serviceClientBuilderCustomizers);
protected AbstractServiceBusSubClientBuilderFactory(ServiceBusClientBuilder serviceBusClientBuilder, P properties, List<AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder>> 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
- Query Added
- No setup required