commit
9c6a744fc9
|
@ -57,7 +57,7 @@ class ArtemisConnectionFactoryConfiguration {
|
|||
private static ActiveMQConnectionFactory createJmsConnectionFactory(ArtemisProperties properties,
|
||||
ArtemisConnectionDetails connectionDetails, ListableBeanFactory beanFactory) {
|
||||
return new ArtemisConnectionFactoryFactory(beanFactory, properties, connectionDetails)
|
||||
.createConnectionFactory(ActiveMQConnectionFactory.class);
|
||||
.createConnectionFactory(ActiveMQConnectionFactory::new, ActiveMQConnectionFactory::new);
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
|
@ -93,7 +93,7 @@ class ArtemisConnectionFactoryConfiguration {
|
|||
ArtemisConnectionDetails connectionDetails) {
|
||||
ActiveMQConnectionFactory connectionFactory = new ArtemisConnectionFactoryFactory(beanFactory, properties,
|
||||
connectionDetails)
|
||||
.createConnectionFactory(ActiveMQConnectionFactory.class);
|
||||
.createConnectionFactory(ActiveMQConnectionFactory::new, ActiveMQConnectionFactory::new);
|
||||
return new JmsPoolConnectionFactoryFactory(properties.getPool())
|
||||
.createPooledConnectionFactory(connectionFactory);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
package org.springframework.boot.autoconfigure.jms.artemis;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.apache.activemq.artemis.api.core.TransportConfiguration;
|
||||
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
|
||||
|
@ -61,10 +61,11 @@ class ArtemisConnectionFactoryFactory {
|
|||
this.connectionDetails = connectionDetails;
|
||||
}
|
||||
|
||||
<T extends ActiveMQConnectionFactory> T createConnectionFactory(Class<T> factoryClass) {
|
||||
<T extends ActiveMQConnectionFactory> T createConnectionFactory(Function<String, T> nativeFactoryCreator,
|
||||
Function<ServerLocator, T> embeddedFactoryCreator) {
|
||||
try {
|
||||
startEmbeddedJms();
|
||||
return doCreateConnectionFactory(factoryClass);
|
||||
return doCreateConnectionFactory(nativeFactoryCreator, embeddedFactoryCreator);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new IllegalStateException("Unable to create ActiveMQConnectionFactory", ex);
|
||||
|
@ -84,15 +85,16 @@ class ArtemisConnectionFactoryFactory {
|
|||
}
|
||||
}
|
||||
|
||||
private <T extends ActiveMQConnectionFactory> T doCreateConnectionFactory(Class<T> factoryClass) throws Exception {
|
||||
private <T extends ActiveMQConnectionFactory> T doCreateConnectionFactory(Function<String, T> nativeFactoryCreator,
|
||||
Function<ServerLocator, T> embeddedFactoryCreator) throws Exception {
|
||||
ArtemisMode mode = this.connectionDetails.getMode();
|
||||
if (mode == null) {
|
||||
mode = deduceMode();
|
||||
}
|
||||
if (mode == ArtemisMode.EMBEDDED) {
|
||||
return createEmbeddedConnectionFactory(factoryClass);
|
||||
return createEmbeddedConnectionFactory(embeddedFactoryCreator);
|
||||
}
|
||||
return createNativeConnectionFactory(factoryClass);
|
||||
return createNativeConnectionFactory(nativeFactoryCreator);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -115,13 +117,13 @@ class ArtemisConnectionFactoryFactory {
|
|||
return false;
|
||||
}
|
||||
|
||||
private <T extends ActiveMQConnectionFactory> T createEmbeddedConnectionFactory(Class<T> factoryClass)
|
||||
throws Exception {
|
||||
private <T extends ActiveMQConnectionFactory> T createEmbeddedConnectionFactory(
|
||||
Function<ServerLocator, T> factoryCreator) throws Exception {
|
||||
try {
|
||||
TransportConfiguration transportConfiguration = new TransportConfiguration(
|
||||
InVMConnectorFactory.class.getName(), this.properties.getEmbedded().generateTransportParameters());
|
||||
ServerLocator serviceLocator = ActiveMQClient.createServerLocatorWithoutHA(transportConfiguration);
|
||||
return factoryClass.getConstructor(ServerLocator.class).newInstance(serviceLocator);
|
||||
ServerLocator serverLocator = ActiveMQClient.createServerLocatorWithoutHA(transportConfiguration);
|
||||
return factoryCreator.apply(serverLocator);
|
||||
}
|
||||
catch (NoClassDefFoundError ex) {
|
||||
throw new IllegalStateException("Unable to create InVM "
|
||||
|
@ -129,9 +131,8 @@ class ArtemisConnectionFactoryFactory {
|
|||
}
|
||||
}
|
||||
|
||||
private <T extends ActiveMQConnectionFactory> T createNativeConnectionFactory(Class<T> factoryClass)
|
||||
throws Exception {
|
||||
T connectionFactory = newNativeConnectionFactory(factoryClass);
|
||||
private <T extends ActiveMQConnectionFactory> T createNativeConnectionFactory(Function<String, T> factoryCreator) {
|
||||
T connectionFactory = newNativeConnectionFactory(factoryCreator);
|
||||
String user = this.connectionDetails.getUser();
|
||||
if (StringUtils.hasText(user)) {
|
||||
connectionFactory.setUser(user);
|
||||
|
@ -140,12 +141,10 @@ class ArtemisConnectionFactoryFactory {
|
|||
return connectionFactory;
|
||||
}
|
||||
|
||||
private <T extends ActiveMQConnectionFactory> T newNativeConnectionFactory(Class<T> factoryClass) throws Exception {
|
||||
private <T extends ActiveMQConnectionFactory> T newNativeConnectionFactory(Function<String, T> factoryCreator) {
|
||||
String brokerUrl = StringUtils.hasText(this.connectionDetails.getBrokerUrl())
|
||||
? this.connectionDetails.getBrokerUrl() : DEFAULT_BROKER_URL;
|
||||
Constructor<T> constructor = factoryClass.getConstructor(String.class);
|
||||
return constructor.newInstance(brokerUrl);
|
||||
|
||||
return factoryCreator.apply(brokerUrl);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -47,14 +47,14 @@ class ArtemisXAConnectionFactoryConfiguration {
|
|||
ArtemisConnectionDetails connectionDetails, XAConnectionFactoryWrapper wrapper) throws Exception {
|
||||
return wrapper
|
||||
.wrapConnectionFactory(new ArtemisConnectionFactoryFactory(beanFactory, properties, connectionDetails)
|
||||
.createConnectionFactory(ActiveMQXAConnectionFactory.class));
|
||||
.createConnectionFactory(ActiveMQXAConnectionFactory::new, ActiveMQXAConnectionFactory::new));
|
||||
}
|
||||
|
||||
@Bean
|
||||
ActiveMQXAConnectionFactory nonXaJmsConnectionFactory(ListableBeanFactory beanFactory, ArtemisProperties properties,
|
||||
ArtemisConnectionDetails connectionDetails) {
|
||||
return new ArtemisConnectionFactoryFactory(beanFactory, properties, connectionDetails)
|
||||
.createConnectionFactory(ActiveMQXAConnectionFactory.class);
|
||||
.createConnectionFactory(ActiveMQXAConnectionFactory::new, ActiveMQXAConnectionFactory::new);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue