Skip to content

Commit 42e0dc1

Browse files
committed
Migrate from deprecated Artemis EmbeddedJMS
Closes gh-16646
1 parent b210d2f commit 42e0dc1

File tree

2 files changed

+32
-18
lines changed

2 files changed

+32
-18
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/artemis/ArtemisEmbeddedServerConfiguration.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@
1919
import java.util.List;
2020
import java.util.stream.Collectors;
2121

22+
import org.apache.activemq.artemis.api.core.RoutingType;
23+
import org.apache.activemq.artemis.core.config.CoreAddressConfiguration;
24+
import org.apache.activemq.artemis.core.config.CoreQueueConfiguration;
25+
import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
2226
import org.apache.activemq.artemis.jms.server.config.JMSConfiguration;
2327
import org.apache.activemq.artemis.jms.server.config.JMSQueueConfiguration;
2428
import org.apache.activemq.artemis.jms.server.config.TopicConfiguration;
2529
import org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl;
2630
import org.apache.activemq.artemis.jms.server.config.impl.JMSQueueConfigurationImpl;
2731
import org.apache.activemq.artemis.jms.server.config.impl.TopicConfigurationImpl;
28-
import org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS;
2932

3033
import org.springframework.beans.factory.ObjectProvider;
3134
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -42,7 +45,7 @@
4245
* @author Stephane Nicoll
4346
*/
4447
@Configuration(proxyBeanMethods = false)
45-
@ConditionalOnClass(EmbeddedJMS.class)
48+
@ConditionalOnClass(EmbeddedActiveMQ.class)
4649
@ConditionalOnProperty(prefix = "spring.artemis.embedded", name = "enabled", havingValue = "true",
4750
matchIfMissing = true)
4851
class ArtemisEmbeddedServerConfiguration {
@@ -61,15 +64,25 @@ org.apache.activemq.artemis.core.config.Configuration artemisConfiguration() {
6164

6265
@Bean(initMethod = "start", destroyMethod = "stop")
6366
@ConditionalOnMissingBean
64-
EmbeddedJMS artemisServer(org.apache.activemq.artemis.core.config.Configuration configuration,
65-
JMSConfiguration jmsConfiguration,
66-
ObjectProvider<ArtemisConfigurationCustomizer> configurationCustomizers) {
67-
EmbeddedJMS server = new EmbeddedJMS();
67+
EmbeddedActiveMQ embeddedActiveMq(org.apache.activemq.artemis.core.config.Configuration configuration,
68+
JMSConfiguration jmsConfiguration, ObjectProvider<ArtemisConfigurationCustomizer> configurationCustomizers)
69+
throws Exception {
70+
for (JMSQueueConfiguration queueConfiguration : jmsConfiguration.getQueueConfigurations()) {
71+
String queueName = queueConfiguration.getName();
72+
configuration.addAddressConfiguration(
73+
new CoreAddressConfiguration().setName(queueName).addRoutingType(RoutingType.ANYCAST)
74+
.addQueueConfiguration(new CoreQueueConfiguration().setAddress(queueName).setName(queueName)
75+
.setFilterString(queueConfiguration.getSelector())
76+
.setDurable(queueConfiguration.isDurable()).setRoutingType(RoutingType.ANYCAST)));
77+
}
78+
for (TopicConfiguration topicConfiguration : jmsConfiguration.getTopicConfigurations()) {
79+
configuration.addAddressConfiguration(new CoreAddressConfiguration().setName(topicConfiguration.getName())
80+
.addRoutingType(RoutingType.MULTICAST));
81+
}
6882
configurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration));
69-
server.setConfiguration(configuration);
70-
server.setJmsConfiguration(jmsConfiguration);
71-
server.setRegistry(new ArtemisNoOpBindingRegistry());
72-
return server;
83+
EmbeddedActiveMQ embeddedActiveMq = new EmbeddedActiveMQ();
84+
embeddedActiveMq.setConfiguration(configuration);
85+
return embeddedActiveMq;
7386
}
7487

7588
@Bean

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/artemis/ArtemisAutoConfigurationTests.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@
3131
import org.apache.activemq.artemis.api.core.TransportConfiguration;
3232
import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory;
3333
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
34+
import org.apache.activemq.artemis.core.server.ActiveMQServer;
3435
import org.apache.activemq.artemis.core.server.BindingQueryResult;
36+
import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
3537
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
3638
import org.apache.activemq.artemis.jms.server.config.JMSConfiguration;
3739
import org.apache.activemq.artemis.jms.server.config.JMSQueueConfiguration;
3840
import org.apache.activemq.artemis.jms.server.config.TopicConfiguration;
3941
import org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl;
4042
import org.apache.activemq.artemis.jms.server.config.impl.JMSQueueConfigurationImpl;
4143
import org.apache.activemq.artemis.jms.server.config.impl.TopicConfigurationImpl;
42-
import org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS;
4344
import org.junit.jupiter.api.Test;
4445
import org.junit.jupiter.api.io.TempDir;
4546
import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
@@ -151,7 +152,7 @@ void embeddedConnectionFactory() {
151152
.withPropertyValues("spring.artemis.mode:embedded").run((context) -> {
152153
ArtemisProperties properties = context.getBean(ArtemisProperties.class);
153154
assertThat(properties.getMode()).isEqualTo(ArtemisMode.EMBEDDED);
154-
assertThat(context).hasSingleBean(EmbeddedJMS.class);
155+
assertThat(context).hasSingleBean(EmbeddedActiveMQ.class);
155156
org.apache.activemq.artemis.core.config.Configuration configuration = context
156157
.getBean(org.apache.activemq.artemis.core.config.Configuration.class);
157158
assertThat(configuration.isPersistenceEnabled()).isFalse();
@@ -164,7 +165,7 @@ void embeddedConnectionFactory() {
164165
void embeddedConnectionFactoryByDefault() {
165166
// No mode is specified
166167
this.contextRunner.withUserConfiguration(EmptyConfiguration.class).run((context) -> {
167-
assertThat(context).hasSingleBean(EmbeddedJMS.class);
168+
assertThat(context).hasSingleBean(EmbeddedActiveMQ.class);
168169
org.apache.activemq.artemis.core.config.Configuration configuration = context
169170
.getBean(org.apache.activemq.artemis.core.config.Configuration.class);
170171
assertThat(configuration.isPersistenceEnabled()).isFalse();
@@ -178,7 +179,7 @@ void nativeConnectionFactoryIfEmbeddedServiceDisabledExplicitly() {
178179
// No mode is specified
179180
this.contextRunner.withUserConfiguration(EmptyConfiguration.class)
180181
.withPropertyValues("spring.artemis.embedded.enabled:false").run((context) -> {
181-
assertThat(context).doesNotHaveBean(EmbeddedJMS.class);
182+
assertThat(context).doesNotHaveBean(ActiveMQServer.class);
182183
assertNettyConnectionFactory(getActiveMQConnectionFactory(context.getBean(ConnectionFactory.class)),
183184
"localhost", 61616);
184185
});
@@ -190,7 +191,7 @@ void embeddedConnectionFactoryEvenIfEmbeddedServiceDisabled() {
190191
this.contextRunner.withUserConfiguration(EmptyConfiguration.class)
191192
.withPropertyValues("spring.artemis.mode:embedded", "spring.artemis.embedded.enabled:false")
192193
.run((context) -> {
193-
assertThat(context.getBeansOfType(EmbeddedJMS.class)).isEmpty();
194+
assertThat(context.getBeansOfType(ActiveMQServer.class)).isEmpty();
194195
assertInVmConnectionFactory(getActiveMQConnectionFactory(context.getBean(ConnectionFactory.class)));
195196
});
196197
}
@@ -379,10 +380,10 @@ private TransportConfiguration getSingleTransportConfiguration(ActiveMQConnectio
379380

380381
private static final class DestinationChecker {
381382

382-
private final EmbeddedJMS embeddedJms;
383+
private final ActiveMQServer server;
383384

384385
private DestinationChecker(ApplicationContext applicationContext) {
385-
this.embeddedJms = applicationContext.getBean(EmbeddedJMS.class);
386+
this.server = applicationContext.getBean(EmbeddedActiveMQ.class).getActiveMQServer();
386387
}
387388

388389
void checkQueue(String name, boolean shouldExist) {
@@ -395,7 +396,7 @@ void checkTopic(String name, boolean shouldExist) {
395396

396397
void checkDestination(String name, RoutingType routingType, boolean shouldExist) {
397398
try {
398-
BindingQueryResult result = this.embeddedJms.getActiveMQServer().bindingQuery(new SimpleString(name));
399+
BindingQueryResult result = this.server.bindingQuery(new SimpleString(name));
399400
assertThat(result.isExists()).isEqualTo(shouldExist);
400401
if (shouldExist) {
401402
assertThat(result.getAddressInfo().getRoutingType()).isEqualTo(routingType);

0 commit comments

Comments
 (0)