Skip to content

Commit 0e844cb

Browse files
authored
Migrate to use azure-servicebus-jms (Azure#37369)
1 parent 5ec90f0 commit 0e844cb

File tree

14 files changed

+131
-76
lines changed

14 files changed

+131
-76
lines changed

eng/versioning/external_dependencies.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ com.microsoft.azure:azure-cosmos;3.7.3
3636
com.microsoft.azure:azure-keyvault-cryptography;1.2.2
3737
com.microsoft.azure:azure-media;0.9.8
3838
com.microsoft.azure:azure-servicebus;3.6.1
39-
com.microsoft.azure:azure-servicebus-jms;0.0.9
39+
com.microsoft.azure:azure-servicebus-jms;1.0.0
4040
com.microsoft.azure:qpid-proton-j-extensions;1.2.4
4141
com.microsoft.azure.sdk.iot:iot-service-client;1.30.0
4242
com.microsoft.rest:client-runtime;1.7.4

sdk/spring/spring-cloud-azure-autoconfigure/pom.xml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,19 @@
123123
<optional>true</optional>
124124
</dependency>
125125
<dependency>
126-
<groupId>org.apache.qpid</groupId>
127-
<artifactId>qpid-jms-client</artifactId>
128-
<version>0.53.0</version> <!-- {x-version-update;org.apache.qpid:qpid-jms-client;external_dependency} -->
129-
<optional>true</optional>
126+
<groupId>com.microsoft.azure</groupId>
127+
<artifactId>azure-servicebus-jms</artifactId>
128+
<version>1.0.0</version> <!-- {x-version-update;com.microsoft.azure:azure-servicebus-jms;external_dependency} -->
129+
<exclusions>
130+
<exclusion>
131+
<groupId>com.azure</groupId>
132+
<artifactId>azure-core</artifactId>
133+
</exclusion>
134+
<exclusion>
135+
<groupId>com.azure</groupId>
136+
<artifactId>azure-identity</artifactId>
137+
</exclusion>
138+
</exclusions>
130139
</dependency>
131140
<dependency>
132141
<groupId>org.messaginghub</groupId>
@@ -396,8 +405,8 @@
396405
<rules>
397406
<bannedDependencies>
398407
<includes>
408+
<include>com.microsoft.azure:azure-servicebus-jms:[1.0.0]</include> <!-- {x-include-update;com.microsoft.azure:azure-servicebus-jms;external_dependency} -->
399409
<include>org.messaginghub:pooled-jms:[1.2.5]</include> <!-- {x-include-update;org.messaginghub:pooled-jms;external_dependency} -->
400-
<include>org.apache.qpid:qpid-jms-client:[0.53.0]</include> <!-- {x-include-update;org.apache.qpid:qpid-jms-client;external_dependency} -->
401410
<include>jakarta.validation:jakarta.validation-api:[2.0.2]</include> <!-- {x-include-update;jakarta.validation:jakarta.validation-api;external_dependency} -->
402411
<include>javax.servlet:javax.servlet-api:[4.0.1]</include> <!-- {x-include-update;javax.servlet:javax.servlet-api;external_dependency} -->
403412
<include>org.hibernate.validator:hibernate-validator:[6.2.5.Final]</include> <!-- {x-include-update;org.hibernate.validator:hibernate-validator;external_dependency} -->

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/AzurePasswordlessEnvironmentPostProcessor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringAp
3131
Properties properties = new Properties();
3232
List<String> passwordlessCredentialSupplier = new ArrayList<>();
3333
passwordlessCredentialSupplier.add("azureRedisCredentialSupplier");
34-
passwordlessCredentialSupplier.add("azureServiceBusJmsCredentialSupplier");
3534
properties.setProperty("spring.cloud.function.ineligible-definitions", String.join(",", passwordlessCredentialSupplier));
3635
environment.getPropertySources().addLast(new PropertiesPropertySource("passwordless", properties));
3736
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
* AzureServiceBusJmsCredentialSupplier that provides a String as the password to connect Azure ServiceBus.
1313
*
1414
* @since 4.7.0
15+
*
16+
* @deprecated use {@link com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory} now, doesn't need this supplier anymore.
1517
*/
18+
@Deprecated
1619
public class AzureServiceBusJmsCredentialSupplier implements Supplier<String> {
1720

1821
private final AzureAuthenticationTemplate azureAuthenticationTemplate;

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

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55

66
import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnMissingProperty;
77
import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties;
8+
import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer;
89
import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties;
910
import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration;
1011
import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils;
12+
import com.azure.spring.cloud.core.implementation.util.ReflectionUtils;
1113
import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider;
1214
import com.azure.spring.cloud.core.service.AzureServiceType;
15+
import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory;
1316
import org.apache.qpid.jms.JmsConnectionExtensions;
1417
import org.apache.qpid.jms.JmsConnectionFactory;
1518
import org.springframework.beans.factory.ObjectProvider;
@@ -29,9 +32,13 @@
2932
import org.springframework.context.annotation.Import;
3033
import org.springframework.jms.core.JmsTemplate;
3134

35+
import javax.jms.Connection;
3236
import javax.jms.ConnectionFactory;
37+
import java.net.URI;
38+
import java.util.EnumMap;
3339
import java.util.HashMap;
3440
import java.util.Map;
41+
import java.util.function.BiFunction;
3542

3643
import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.AZURE_SPRING_PASSWORDLESS_SERVICE_BUS;
3744
import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.AZURE_SPRING_SERVICE_BUS;
@@ -49,7 +56,7 @@
4956
@ConditionalOnProperty(value = "spring.jms.servicebus.enabled", matchIfMissing = true)
5057
@ConditionalOnClass({ ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class })
5158
@EnableConfigurationProperties({ JmsProperties.class })
52-
@Import({ ServiceBusJmsPasswordlessConfiguration.class, ServiceBusJmsConnectionFactoryConfiguration.class, ServiceBusJmsContainerConfiguration.class })
59+
@Import({ ServiceBusJmsConnectionFactoryConfiguration.class, ServiceBusJmsContainerConfiguration.class })
5360
public class ServiceBusJmsAutoConfiguration {
5461

5562
@Bean
@@ -59,19 +66,23 @@ AzureServiceBusJmsProperties serviceBusJmsProperties(AzureGlobalProperties azure
5966
}
6067

6168
@Bean
62-
@ConditionalOnExpression("'premium'.equalsIgnoreCase('${spring.jms.servicebus.pricing-tier}')")
63-
ServiceBusJmsConnectionFactoryCustomizer amqpOpenPropertiesCustomizer(ObjectProvider<AzureServiceBusJmsCredentialSupplier> azureServiceBusJmsCredentialSupplier) {
69+
@ConditionalOnExpression("'standard'.equalsIgnoreCase('${spring.jms.servicebus.pricing-tier}')")
70+
@SuppressWarnings("unchecked")
71+
AzureServiceBusJmsConnectionFactoryCustomizer amqpOpenPropertiesCustomizer(ObjectProvider<AzureServiceBusJmsCredentialSupplier> azureServiceBusJmsCredentialSupplier) {
6472
return factory -> {
65-
final Map<String, Object> properties = new HashMap<>();
66-
properties.put("com.microsoft:is-client-provider", true);
67-
if (azureServiceBusJmsCredentialSupplier.getIfAvailable() != null) {
68-
properties.put("user-agent", AZURE_SPRING_PASSWORDLESS_SERVICE_BUS);
69-
} else {
70-
properties.put("user-agent", AZURE_SPRING_SERVICE_BUS);
73+
JmsConnectionFactory jmsFactory = (JmsConnectionFactory) ReflectionUtils.getField(ServiceBusJmsConnectionFactory.class, "factory", factory);
74+
EnumMap<JmsConnectionExtensions, BiFunction<Connection, URI, Object>> extensionMap =
75+
(EnumMap) ReflectionUtils.getField(JmsConnectionFactory.class, "extensionMap", jmsFactory);
76+
if (extensionMap.containsKey(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES) ) {
77+
Map<String, Object> properties = (Map) extensionMap.get(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES).apply(null, null);
78+
if (properties.containsKey("com.microsoft:is-client-provider")) {
79+
jmsFactory.setExtension(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES.toString(),
80+
(connection, uri) -> {
81+
properties.remove("com.microsoft:is-client-provider");
82+
return properties;
83+
});
84+
}
7185
}
72-
//set user agent
73-
factory.setExtension(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES.toString(),
74-
(connection, uri) -> properties);
7586
};
7687
}
7788

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88

99
/**
1010
* ServiceBus JmsConnectionFactory implementation.
11+
*
12+
* @deprecated Use {@link com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory} instead.
1113
*/
14+
@Deprecated
1215
public class ServiceBusJmsConnectionFactory extends JmsConnectionFactory {
1316

1417
/**

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

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

6+
import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer;
67
import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties;
8+
import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory;
79
import org.apache.commons.pool2.PooledObject;
810
import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
911
import org.springframework.beans.factory.ObjectProvider;
@@ -27,7 +29,7 @@
2729
public class ServiceBusJmsConnectionFactoryConfiguration {
2830

2931
private static ServiceBusJmsConnectionFactory createJmsConnectionFactory(AzureServiceBusJmsProperties properties,
30-
ObjectProvider<ServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
32+
ObjectProvider<AzureServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
3133
return new ServiceBusJmsConnectionFactoryFactory(properties,
3234
factoryCustomizers.orderedStream().collect(Collectors.toList()))
3335
.createConnectionFactory(ServiceBusJmsConnectionFactory.class);
@@ -41,7 +43,7 @@ static class SimpleConnectionFactoryConfiguration {
4143
@Bean
4244
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false")
4345
ServiceBusJmsConnectionFactory jmsConnectionFactory(AzureServiceBusJmsProperties properties,
44-
ObjectProvider<ServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
46+
ObjectProvider<AzureServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
4547
return createJmsConnectionFactory(properties, factoryCustomizers);
4648
}
4749

@@ -54,7 +56,7 @@ static class CachingConnectionFactoryConfiguration {
5456
@Bean
5557
CachingConnectionFactory jmsConnectionFactory(JmsProperties jmsProperties,
5658
AzureServiceBusJmsProperties properties,
57-
ObjectProvider<ServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
59+
ObjectProvider<AzureServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
5860
ServiceBusJmsConnectionFactory factory = createJmsConnectionFactory(properties, factoryCustomizers);
5961
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(factory);
6062
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
@@ -74,7 +76,7 @@ static class PooledConnectionFactoryConfiguration {
7476
@Bean(destroyMethod = "stop")
7577
@ConditionalOnProperty(prefix = "spring.jms.servicebus.pool", name = "enabled", havingValue = "true")
7678
JmsPoolConnectionFactory jmsPoolConnectionFactory(AzureServiceBusJmsProperties properties,
77-
ObjectProvider<ServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
79+
ObjectProvider<AzureServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
7880
ServiceBusJmsConnectionFactory factory = createJmsConnectionFactory(properties, factoryCustomizers);
7981
return new JmsPoolConnectionFactoryFactory(properties.getPool())
8082
.createPooledConnectionFactory(factory);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@
33

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

6+
import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer;
7+
68
/**
79
* A customizer for {@link ServiceBusJmsConnectionFactory}.
10+
*
11+
* @deprecated Use {@link AzureServiceBusJmsConnectionFactoryCustomizer} instead.
812
*/
913
@FunctionalInterface
14+
@Deprecated
1015
public interface ServiceBusJmsConnectionFactoryCustomizer {
1116

1217
/**

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

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33

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

6+
import com.azure.core.credential.TokenCredential;
7+
import com.azure.identity.extensions.implementation.credential.TokenCredentialProviderOptions;
8+
import com.azure.identity.extensions.implementation.credential.provider.TokenCredentialProvider;
9+
import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer;
610
import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties;
7-
import com.azure.spring.cloud.core.implementation.connectionstring.ServiceBusConnectionString;
8-
import org.apache.qpid.jms.policy.JmsDefaultPrefetchPolicy;
11+
import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory;
12+
import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactorySettings;
913
import org.springframework.util.Assert;
1014
import org.springframework.util.StringUtils;
1115

@@ -18,12 +22,10 @@
1822
*/
1923
public class ServiceBusJmsConnectionFactoryFactory {
2024
private final AzureServiceBusJmsProperties properties;
21-
private final List<ServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers;
22-
23-
private static final String AMQP_URI_FORMAT = "amqps://%s?amqp.idleTimeout=%d";
25+
private final List<AzureServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers;
2426

2527
ServiceBusJmsConnectionFactoryFactory(AzureServiceBusJmsProperties properties,
26-
List<ServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
28+
List<AzureServiceBusJmsConnectionFactoryCustomizer> factoryCustomizers) {
2729
Assert.notNull(properties, "Properties must not be null");
2830
this.properties = properties;
2931
this.factoryCustomizers = (factoryCustomizers != null) ? factoryCustomizers : Collections.emptyList();
@@ -40,42 +42,32 @@ <T extends ServiceBusJmsConnectionFactory> T createConnectionFactory(Class<T> fa
4042

4143
private <T extends ServiceBusJmsConnectionFactory> void setClientId(T factory) {
4244
if (StringUtils.hasText(this.properties.getTopicClientId())) {
43-
factory.setClientID(this.properties.getTopicClientId());
45+
factory.setClientId(this.properties.getTopicClientId());
4446
}
4547
}
4648

4749
private <T extends ServiceBusJmsConnectionFactory> void setPrefetchPolicy(T factory) {
4850
AzureServiceBusJmsProperties.PrefetchPolicy prefetchProperties = this.properties.getPrefetchPolicy();
49-
JmsDefaultPrefetchPolicy prefetchPolicy = (JmsDefaultPrefetchPolicy) factory.getPrefetchPolicy();
50-
prefetchPolicy.setDurableTopicPrefetch(prefetchProperties.getDurableTopicPrefetch());
51-
prefetchPolicy.setQueueBrowserPrefetch(prefetchProperties.getQueueBrowserPrefetch());
52-
prefetchPolicy.setQueuePrefetch(prefetchProperties.getQueuePrefetch());
53-
prefetchPolicy.setTopicPrefetch(prefetchProperties.getTopicPrefetch());
54-
factory.setPrefetchPolicy(prefetchPolicy);
51+
factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.durableTopicPrefetch", String.valueOf(prefetchProperties.getDurableTopicPrefetch()));
52+
factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.queueBrowserPrefetch", String.valueOf(prefetchProperties.getQueueBrowserPrefetch()));
53+
factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.queuePrefetch", String.valueOf(prefetchProperties.getQueuePrefetch()));
54+
factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.topicPrefetch", String.valueOf(prefetchProperties.getTopicPrefetch()));
5555
}
5656

5757
private <T extends ServiceBusJmsConnectionFactory> T createConnectionFactoryInstance(Class<T> factoryClass) {
5858
try {
5959
T factory;
6060
if (properties.isPasswordlessEnabled()) {
61-
String remoteUrl = String.format(AMQP_URI_FORMAT,
62-
properties.getNamespace() + "." + properties.getProfile().getEnvironment().getServiceBusDomainName(),
63-
properties.getIdleTimeout().toMillis());
64-
factory = factoryClass.getConstructor(String.class).newInstance(remoteUrl);
65-
} else {
66-
ServiceBusConnectionString serviceBusConnectionString = new ServiceBusConnectionString(properties.getConnectionString());
67-
String host = serviceBusConnectionString.getEndpointUri().getHost();
61+
String hostName = properties.getNamespace() + "." + properties.getProfile().getEnvironment().getServiceBusDomainName();
6862

69-
String remoteUrl = String.format(AMQP_URI_FORMAT, host, properties.getIdleTimeout().toMillis());
70-
String username = serviceBusConnectionString.getSharedAccessKeyName();
71-
String password = serviceBusConnectionString.getSharedAccessKey();
63+
TokenCredentialProvider tokenCredentialProvider = TokenCredentialProvider.createDefault(new TokenCredentialProviderOptions(properties.toPasswordlessProperties()));
64+
TokenCredential tokenCredential = tokenCredentialProvider.get();
7265

73-
if (StringUtils.hasLength(username) && StringUtils.hasLength(password)) {
74-
factory = factoryClass.getConstructor(String.class, String.class, String.class)
75-
.newInstance(username, password, remoteUrl);
76-
} else {
77-
factory = factoryClass.getConstructor(String.class).newInstance(remoteUrl);
78-
}
66+
factory = factoryClass.getConstructor(TokenCredential.class, String.class, ServiceBusJmsConnectionFactorySettings.class)
67+
.newInstance(tokenCredential, hostName, new ServiceBusJmsConnectionFactorySettings());
68+
69+
} else {
70+
factory = factoryClass.getConstructor(String.class, ServiceBusJmsConnectionFactorySettings.class).newInstance(properties.getConnectionString(), new ServiceBusJmsConnectionFactorySettings());
7971
}
8072
return factory;
8173
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
@@ -84,7 +76,7 @@ private <T extends ServiceBusJmsConnectionFactory> T createConnectionFactoryInst
8476
}
8577

8678
private void customize(ServiceBusJmsConnectionFactory connectionFactory) {
87-
for (ServiceBusJmsConnectionFactoryCustomizer factoryCustomizer : this.factoryCustomizers) {
79+
for (AzureServiceBusJmsConnectionFactoryCustomizer factoryCustomizer : this.factoryCustomizers) {
8880
factoryCustomizer.customize(connectionFactory);
8981
}
9082
}

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

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package com.azure.spring.cloud.autoconfigure.jms;
55

66
import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties;
7-
import org.apache.qpid.jms.JmsConnectionExtensions;
87
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
98
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
109
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -26,15 +25,4 @@ AzureServiceBusJmsCredentialSupplier azureServiceBusJmsCredentialSupplier(AzureS
2625
return new AzureServiceBusJmsCredentialSupplier(azureServiceBusJmsProperties.toPasswordlessProperties());
2726
}
2827

29-
@Bean
30-
ServiceBusJmsConnectionFactoryCustomizer jmsAADAuthenticationCustomizer(AzureServiceBusJmsCredentialSupplier credentialSupplier) {
31-
return factory -> {
32-
factory.setExtension(JmsConnectionExtensions.USERNAME_OVERRIDE.toString(), (connection, uri) -> "$jwt");
33-
factory.setExtension(JmsConnectionExtensions.PASSWORD_OVERRIDE.toString(), (connection, uri) ->
34-
credentialSupplier.get()
35-
);
36-
};
37-
}
38-
39-
4028
}

0 commit comments

Comments
 (0)