Polish "Allow to configure ActiveMQ Artemis with a broker url"
See gh-24302
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -44,6 +44,8 @@ import org.springframework.util.StringUtils;
|
||||
*/
|
||||
class ArtemisConnectionFactoryFactory {
|
||||
|
||||
private static final String DEFAULT_BROKER_URL = "tcp://localhost:61616";
|
||||
|
||||
static final String[] EMBEDDED_JMS_CLASSES = { "org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS",
|
||||
"org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ" };
|
||||
|
||||
@@ -128,21 +130,7 @@ class ArtemisConnectionFactoryFactory {
|
||||
|
||||
private <T extends ActiveMQConnectionFactory> T createNativeConnectionFactory(Class<T> factoryClass)
|
||||
throws Exception {
|
||||
T connectionFactory;
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
String url = this.properties.getBrokerUrl();
|
||||
if (StringUtils.hasText(url)) {
|
||||
Constructor<T> constructor = factoryClass.getConstructor(String.class);
|
||||
connectionFactory = constructor.newInstance(url);
|
||||
}
|
||||
else {
|
||||
params.put(TransportConstants.HOST_PROP_NAME, this.properties.getHost());
|
||||
params.put(TransportConstants.PORT_PROP_NAME, this.properties.getPort());
|
||||
TransportConfiguration transportConfiguration = new TransportConfiguration(
|
||||
NettyConnectorFactory.class.getName(), params);
|
||||
Constructor<T> constructor = factoryClass.getConstructor(boolean.class, TransportConfiguration[].class);
|
||||
connectionFactory = constructor.newInstance(false, new TransportConfiguration[] { transportConfiguration });
|
||||
}
|
||||
T connectionFactory = newNativeConnectionFactory(factoryClass);
|
||||
String user = this.properties.getUser();
|
||||
if (StringUtils.hasText(user)) {
|
||||
connectionFactory.setUser(user);
|
||||
@@ -151,4 +139,23 @@ class ArtemisConnectionFactoryFactory {
|
||||
return connectionFactory;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private <T extends ActiveMQConnectionFactory> T newNativeConnectionFactory(Class<T> factoryClass) throws Exception {
|
||||
// Fallback if the broker url is not set
|
||||
if (!StringUtils.hasText(this.properties.getBrokerUrl()) && StringUtils.hasText(this.properties.getHost())) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put(TransportConstants.HOST_PROP_NAME, this.properties.getHost());
|
||||
params.put(TransportConstants.PORT_PROP_NAME, this.properties.getPort());
|
||||
TransportConfiguration transportConfiguration = new TransportConfiguration(
|
||||
NettyConnectorFactory.class.getName(), params);
|
||||
Constructor<T> constructor = factoryClass.getConstructor(boolean.class, TransportConfiguration[].class);
|
||||
return constructor.newInstance(false, new TransportConfiguration[] { transportConfiguration });
|
||||
}
|
||||
String brokerUrl = StringUtils.hasText(this.properties.getBrokerUrl()) ? this.properties.getBrokerUrl()
|
||||
: DEFAULT_BROKER_URL;
|
||||
Constructor<T> constructor = factoryClass.getConstructor(String.class);
|
||||
return constructor.newInstance(brokerUrl);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,6 +25,7 @@ import org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jms.JmsPoolConnectionFactoryProperties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
/**
|
||||
@@ -43,27 +44,21 @@ public class ArtemisProperties {
|
||||
*/
|
||||
private ArtemisMode mode;
|
||||
|
||||
/**
|
||||
* Artemis broker port.
|
||||
*/
|
||||
private String brokerUrl;
|
||||
|
||||
/**
|
||||
* Artemis broker host.
|
||||
*
|
||||
* This property is deprecated. Use <code>brokerUrl</code> instead.
|
||||
*/
|
||||
@Deprecated
|
||||
private String host = "localhost";
|
||||
private String host;
|
||||
|
||||
/**
|
||||
* Artemis broker port.
|
||||
*
|
||||
* This property is deprecated. Use <code>brokerUrl</code> instead.
|
||||
*/
|
||||
@Deprecated
|
||||
private int port = 61616;
|
||||
|
||||
/**
|
||||
* Artemis broker port.
|
||||
*/
|
||||
private String brokerUrl = "tcp://localhost:61616";
|
||||
|
||||
/**
|
||||
* Login user of the broker.
|
||||
*/
|
||||
@@ -87,22 +82,6 @@ public class ArtemisProperties {
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return this.host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return this.port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getBrokerUrl() {
|
||||
return this.brokerUrl;
|
||||
}
|
||||
@@ -111,6 +90,36 @@ public class ArtemisProperties {
|
||||
this.brokerUrl = brokerUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the host of the broker.
|
||||
* @return the host
|
||||
*/
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.artemis.broker-url")
|
||||
public String getHost() {
|
||||
return this.host;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the port of the broker.
|
||||
* @return the port
|
||||
*/
|
||||
@Deprecated
|
||||
@DeprecatedConfigurationProperty(replacement = "spring.artemis.broker-url")
|
||||
public int getPort() {
|
||||
return this.port;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getUser() {
|
||||
return this.user;
|
||||
}
|
||||
|
||||
@@ -352,6 +352,10 @@
|
||||
"description": "JMX name of the application admin MBean.",
|
||||
"defaultValue": "org.springframework.boot:type=Admin,name=SpringApplication"
|
||||
},
|
||||
{
|
||||
"name": "spring.artemis.broker-url",
|
||||
"defaultValue": "tcp://localhost:61616"
|
||||
},
|
||||
{
|
||||
"name": "spring.artemis.pool.maximum-active-session-per-connection",
|
||||
"deprecation": {
|
||||
|
||||
@@ -124,22 +124,33 @@ class ArtemisAutoConfigurationTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void nativeConnectionFactoryCustomHost() {
|
||||
void nativeConnectionFactoryCustomBrokerUrl() {
|
||||
this.contextRunner.withUserConfiguration(EmptyConfiguration.class)
|
||||
.withPropertyValues("spring.artemis.mode:native", "spring.artemis.host:192.168.1.144",
|
||||
"spring.artemis.port:9876", "spring.artemis.broker-url: ")
|
||||
.withPropertyValues("spring.artemis.mode:native", "spring.artemis.broker-url:tcp://192.168.1.144:9876")
|
||||
.run((context) -> assertNettyConnectionFactory(
|
||||
getActiveMQConnectionFactory(getConnectionFactory(context)), "192.168.1.144", 9876));
|
||||
}
|
||||
|
||||
@Test
|
||||
void nativeConnectionFactoryCustomUrl() {
|
||||
@Deprecated
|
||||
void nativeConnectionFactoryCustomHost() {
|
||||
this.contextRunner.withUserConfiguration(EmptyConfiguration.class)
|
||||
.withPropertyValues("spring.artemis.mode:native", "spring.artemis.broker-url:tcp://192.168.1.144:9876")
|
||||
.withPropertyValues("spring.artemis.mode:native", "spring.artemis.host:192.168.1.144",
|
||||
"spring.artemis.port:9876")
|
||||
.run((context) -> assertNettyConnectionFactory(
|
||||
getActiveMQConnectionFactory(getConnectionFactory(context)), "192.168.1.144", 9876));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Deprecated
|
||||
void nativeConnectionFactoryCustomBrokerUrlAndHost() {
|
||||
this.contextRunner.withUserConfiguration(EmptyConfiguration.class)
|
||||
.withPropertyValues("spring.artemis.mode:native", "spring.artemis.host:192.168.1.144",
|
||||
"spring.artemis.port:9876", "spring.artemis.broker-url=tcp://192.168.1.221:6543")
|
||||
.run((context) -> assertNettyConnectionFactory(
|
||||
getActiveMQConnectionFactory(getConnectionFactory(context)), "192.168.1.221", 6543));
|
||||
}
|
||||
|
||||
@Test
|
||||
void nativeConnectionFactoryCredentials() {
|
||||
this.contextRunner.withUserConfiguration(EmptyConfiguration.class)
|
||||
|
||||
Reference in New Issue
Block a user