Browse Source

Create spring-boot-activemq module

See gh-46082
pull/46230/head
Stéphane Nicoll 9 months ago committed by Andy Wilkinson
parent
commit
fd13ac80e8
  1. 1
      settings.gradle
  2. 43
      spring-boot-project/spring-boot-activemq/build.gradle
  3. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfiguration.java
  4. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionDetails.java
  5. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfiguration.java
  6. 4
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfigurer.java
  7. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryCustomizer.java
  8. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQProperties.java
  9. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQXAConnectionFactoryConfiguration.java
  10. 2
      spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/package-info.java
  11. 94
      spring-boot-project/spring-boot-activemq/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  12. 1
      spring-boot-project/spring-boot-activemq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  13. 2
      spring-boot-project/spring-boot-activemq/src/test/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfigurationTests.java
  14. 2
      spring-boot-project/spring-boot-activemq/src/test/java/org/springframework/boot/activemq/autoconfigure/ActiveMQPropertiesTests.java
  15. 2
      spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle
  16. 4
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthContributorAutoConfiguration.java
  17. 2
      spring-boot-project/spring-boot-actuator/build.gradle
  18. 4
      spring-boot-project/spring-boot-autoconfigure-all/build.gradle
  19. 9
      spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/transaction/jta/JtaAutoConfiguration.java
  20. 89
      spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  21. 1
      spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  22. 1
      spring-boot-project/spring-boot-dependencies/build.gradle
  23. 1
      spring-boot-project/spring-boot-docker-compose/build.gradle
  24. 2
      spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactoryIntegrationTests.java
  25. 2
      spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests.java
  26. 2
      spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactory.java
  27. 2
      spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactory.java
  28. 2
      spring-boot-project/spring-boot-docs/build.gradle
  29. 3
      spring-boot-project/spring-boot-starters/spring-boot-starter-activemq/build.gradle
  30. 3
      spring-boot-project/spring-boot-testcontainers/build.gradle
  31. 2
      spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQClassicContainerConnectionDetailsFactoryIntegrationTests.java
  32. 2
      spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactoryIntegrationTests.java
  33. 2
      spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQClassicContainerConnectionDetailsFactory.java
  34. 2
      spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactory.java

1
settings.gradle

@ -54,6 +54,7 @@ settings.gradle.projectsLoaded {
} }
include "spring-boot-project:spring-boot" include "spring-boot-project:spring-boot"
include "spring-boot-project:spring-boot-activemq"
include "spring-boot-project:spring-boot-actuator" include "spring-boot-project:spring-boot-actuator"
include "spring-boot-project:spring-boot-actuator-autoconfigure" include "spring-boot-project:spring-boot-actuator-autoconfigure"
include "spring-boot-project:spring-boot-all" include "spring-boot-project:spring-boot-all"

43
spring-boot-project/spring-boot-activemq/build.gradle

@ -0,0 +1,43 @@
/*
* Copyright 2012-present 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
plugins {
id "java-library"
id "org.springframework.boot.auto-configuration"
id "org.springframework.boot.configuration-properties"
id "org.springframework.boot.deployed"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot ActiveMQ"
dependencies {
api(project(":spring-boot-project:spring-boot-jms"))
api("org.apache.activemq:activemq-client")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("jakarta.transaction:jakarta.transaction-api")
optional("org.apache.activemq:activemq-broker")
optional("org.messaginghub:pooled-jms") {
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec"
}
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testRuntimeOnly("ch.qos.logback:logback-classic")
}

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQAutoConfiguration.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfiguration.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import jakarta.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionDetails.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionDetails.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails; import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails;

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryConfiguration.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfiguration.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import jakarta.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;

4
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryConfigurer.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryConfigurer.java

@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQProperties.Packages; import org.springframework.boot.activemq.autoconfigure.ActiveMQProperties.Packages;
import org.springframework.util.Assert; import org.springframework.util.Assert;
/** /**

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryCustomizer.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQConnectionFactoryCustomizer.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQProperties.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQProperties.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQXAConnectionFactoryConfiguration.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/ActiveMQXAConnectionFactoryConfiguration.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import jakarta.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import jakarta.transaction.TransactionManager; import jakarta.transaction.TransactionManager;

2
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/package-info.java → spring-boot-project/spring-boot-activemq/src/main/java/org/springframework/boot/activemq/autoconfigure/package-info.java

@ -17,4 +17,4 @@
/** /**
* Auto-configuration for ActiveMQ. * Auto-configuration for ActiveMQ.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;

94
spring-boot-project/spring-boot-activemq/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -0,0 +1,94 @@
{
"groups": [],
"properties": [
{
"name": "spring.activemq.pool.block-if-full",
"type": "java.lang.Boolean",
"description": "Whether to block when a connection is requested and the pool is full. Set it to false to throw a \"JMSException\" instead.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": true
},
{
"name": "spring.activemq.pool.block-if-full-timeout",
"type": "java.time.Duration",
"description": "Blocking period before throwing an exception if the pool is still full.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": "-1ms"
},
{
"name": "spring.activemq.pool.create-connection-on-startup",
"type": "java.lang.Boolean",
"description": "Whether to create a connection on startup. Can be used to warm up the pool on startup.",
"defaultValue": true,
"deprecation": {
"level": "error"
}
},
{
"name": "spring.activemq.pool.enabled",
"type": "java.lang.Boolean",
"description": "Whether a JmsPoolConnectionFactory should be created, instead of a regular ConnectionFactory.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": false
},
{
"name": "spring.activemq.pool.expiry-timeout",
"type": "java.time.Duration",
"description": "Connection expiration timeout.",
"defaultValue": "0ms",
"deprecation": {
"level": "error"
}
},
{
"name": "spring.activemq.pool.idle-timeout",
"type": "java.time.Duration",
"description": "Connection idle timeout.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": "30s"
},
{
"name": "spring.activemq.pool.max-connections",
"type": "java.lang.Integer",
"description": "Maximum number of pooled connections.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": 1
},
{
"name": "spring.activemq.pool.max-sessions-per-connection",
"type": "java.lang.Integer",
"description": "Maximum number of pooled sessions per connection in the pool.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": 500
},
{
"name": "spring.activemq.pool.maximum-active-session-per-connection",
"deprecation": {
"replacement": "spring.activemq.pool.max-sessions-per-connection"
}
},
{
"name": "spring.activemq.pool.reconnect-on-exception",
"type": "java.lang.Boolean",
"description": "Reset the connection when a \"JMSException\" occurs.",
"defaultValue": true,
"deprecation": {
"level": "error"
}
},
{
"name": "spring.activemq.pool.time-between-expiration-check",
"type": "java.time.Duration",
"description": "Time to sleep between runs of the idle connection eviction thread. When negative, no idle connection eviction thread runs.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": "-1ms"
},
{
"name": "spring.activemq.pool.use-anonymous-producers",
"type": "java.lang.Boolean",
"description": "Whether to use only one anonymous \"MessageProducer\" instance. Set it to false to create one \"MessageProducer\" every time one is required.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": true
}
]
}

1
spring-boot-project/spring-boot-activemq/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@ -0,0 +1 @@
org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration

2
spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQAutoConfigurationTests.java → spring-boot-project/spring-boot-activemq/src/test/java/org/springframework/boot/activemq/autoconfigure/ActiveMQAutoConfigurationTests.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import jakarta.jms.ConnectionFactory; import jakarta.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;

2
spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQPropertiesTests.java → spring-boot-project/spring-boot-activemq/src/test/java/org/springframework/boot/activemq/autoconfigure/ActiveMQPropertiesTests.java

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.activemq.autoconfigure;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

2
spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

@ -33,10 +33,10 @@ dependencies {
implementation("com.fasterxml.jackson.core:jackson-databind") implementation("com.fasterxml.jackson.core:jackson-databind")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
optional(project(":spring-boot-project:spring-boot-activemq"))
optional(project(":spring-boot-project:spring-boot-amqp")) optional(project(":spring-boot-project:spring-boot-amqp"))
optional(project(":spring-boot-project:spring-boot-jackson")) optional(project(":spring-boot-project:spring-boot-jackson"))
optional(project(":spring-boot-project:spring-boot-jetty")) optional(project(":spring-boot-project:spring-boot-jetty"))
optional(project(":spring-boot-project:spring-boot-jms"))
optional(project(":spring-boot-project:spring-boot-jsonb")) optional(project(":spring-boot-project:spring-boot-jsonb"))
optional(project(":spring-boot-project:spring-boot-mail")) optional(project(":spring-boot-project:spring-boot-mail"))
optional(project(":spring-boot-project:spring-boot-reactor-netty")) optional(project(":spring-boot-project:spring-boot-reactor-netty"))

4
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthContributorAutoConfiguration.java

@ -28,7 +28,6 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration;
import org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration; import org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -38,7 +37,8 @@ import org.springframework.context.annotation.Bean;
* @author Stephane Nicoll * @author Stephane Nicoll
* @since 2.0.0 * @since 2.0.0
*/ */
@AutoConfiguration(after = { ActiveMQAutoConfiguration.class, ArtemisAutoConfiguration.class }) @AutoConfiguration(after = ArtemisAutoConfiguration.class,
afterName = "org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration")
@ConditionalOnClass(ConnectionFactory.class) @ConditionalOnClass(ConnectionFactory.class)
@ConditionalOnBean(ConnectionFactory.class) @ConditionalOnBean(ConnectionFactory.class)
@ConditionalOnEnabledHealthIndicator("jms") @ConditionalOnEnabledHealthIndicator("jms")

2
spring-boot-project/spring-boot-actuator/build.gradle

@ -39,8 +39,8 @@ dependencies {
dockerTestImplementation("org.testcontainers:neo4j") dockerTestImplementation("org.testcontainers:neo4j")
dockerTestImplementation("org.testcontainers:testcontainers") dockerTestImplementation("org.testcontainers:testcontainers")
optional(project(":spring-boot-project:spring-boot-activemq"))
optional(project(":spring-boot-project:spring-boot-jetty")) optional(project(":spring-boot-project:spring-boot-jetty"))
optional(project(":spring-boot-project:spring-boot-jms"))
optional(project(":spring-boot-project:spring-boot-jsonb")) optional(project(":spring-boot-project:spring-boot-jsonb"))
optional(project(":spring-boot-project:spring-boot-reactor-netty")) optional(project(":spring-boot-project:spring-boot-reactor-netty"))
optional(project(":spring-boot-project:spring-boot-tomcat")) optional(project(":spring-boot-project:spring-boot-tomcat"))

4
spring-boot-project/spring-boot-autoconfigure-all/build.gradle

@ -59,9 +59,9 @@ dependencies {
dockerTestImplementation("org.testcontainers:pulsar") dockerTestImplementation("org.testcontainers:pulsar")
dockerTestImplementation("org.testcontainers:testcontainers") dockerTestImplementation("org.testcontainers:testcontainers")
optional(project(":spring-boot-project:spring-boot-activemq"))
optional(project(":spring-boot-project:spring-boot-jackson")) optional(project(":spring-boot-project:spring-boot-jackson"))
optional(project(":spring-boot-project:spring-boot-jsonb")) optional(project(":spring-boot-project:spring-boot-jsonb"))
optional(project(":spring-boot-project:spring-boot-jms"))
optional(project(":spring-boot-project:spring-boot-reactor-netty")) optional(project(":spring-boot-project:spring-boot-reactor-netty"))
optional(project(":spring-boot-project:spring-boot-tomcat")) optional(project(":spring-boot-project:spring-boot-tomcat"))
optional("co.elastic.clients:elasticsearch-java") optional("co.elastic.clients:elasticsearch-java")
@ -99,8 +99,6 @@ dependencies {
optional("jakarta.ws.rs:jakarta.ws.rs-api") optional("jakarta.ws.rs:jakarta.ws.rs-api")
optional("javax.cache:cache-api") optional("javax.cache:cache-api")
optional("javax.money:money-api") optional("javax.money:money-api")
optional("org.apache.activemq:activemq-broker")
optional("org.apache.activemq:activemq-client")
optional("org.apache.activemq:artemis-jakarta-client") optional("org.apache.activemq:artemis-jakarta-client")
optional("org.apache.activemq:artemis-jakarta-server") optional("org.apache.activemq:artemis-jakarta-server")
optional("org.apache.commons:commons-dbcp2") optional("org.apache.commons:commons-dbcp2")

9
spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/transaction/jta/JtaAutoConfiguration.java

@ -21,7 +21,6 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration;
import org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration; import org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration; import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
@ -36,9 +35,11 @@ import org.springframework.context.annotation.Import;
* @author Nishant Raut * @author Nishant Raut
* @since 1.2.0 * @since 1.2.0
*/ */
@AutoConfiguration(before = { XADataSourceAutoConfiguration.class, ActiveMQAutoConfiguration.class, @AutoConfiguration(
ArtemisAutoConfiguration.class, HibernateJpaAutoConfiguration.class, TransactionAutoConfiguration.class, before = { XADataSourceAutoConfiguration.class, ArtemisAutoConfiguration.class,
TransactionManagerCustomizationAutoConfiguration.class }) HibernateJpaAutoConfiguration.class, TransactionAutoConfiguration.class,
TransactionManagerCustomizationAutoConfiguration.class },
beforeName = "org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration")
@ConditionalOnClass(jakarta.transaction.Transaction.class) @ConditionalOnClass(jakarta.transaction.Transaction.class)
@ConditionalOnBooleanProperty(name = "spring.jta.enabled", matchIfMissing = true) @ConditionalOnBooleanProperty(name = "spring.jta.enabled", matchIfMissing = true)
@Import(JndiJtaConfiguration.class) @Import(JndiJtaConfiguration.class)

89
spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -1,95 +1,6 @@
{ {
"groups": [], "groups": [],
"properties": [ "properties": [
{
"name": "spring.activemq.pool.block-if-full",
"type": "java.lang.Boolean",
"description": "Whether to block when a connection is requested and the pool is full. Set it to false to throw a \"JMSException\" instead.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": true
},
{
"name": "spring.activemq.pool.block-if-full-timeout",
"type": "java.time.Duration",
"description": "Blocking period before throwing an exception if the pool is still full.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": "-1ms"
},
{
"name": "spring.activemq.pool.create-connection-on-startup",
"type": "java.lang.Boolean",
"description": "Whether to create a connection on startup. Can be used to warm up the pool on startup.",
"defaultValue": true,
"deprecation": {
"level": "error"
}
},
{
"name": "spring.activemq.pool.enabled",
"type": "java.lang.Boolean",
"description": "Whether a JmsPoolConnectionFactory should be created, instead of a regular ConnectionFactory.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": false
},
{
"name": "spring.activemq.pool.expiry-timeout",
"type": "java.time.Duration",
"description": "Connection expiration timeout.",
"defaultValue": "0ms",
"deprecation": {
"level": "error"
}
},
{
"name": "spring.activemq.pool.idle-timeout",
"type": "java.time.Duration",
"description": "Connection idle timeout.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": "30s"
},
{
"name": "spring.activemq.pool.max-connections",
"type": "java.lang.Integer",
"description": "Maximum number of pooled connections.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": 1
},
{
"name": "spring.activemq.pool.max-sessions-per-connection",
"type": "java.lang.Integer",
"description": "Maximum number of pooled sessions per connection in the pool.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": 500
},
{
"name": "spring.activemq.pool.maximum-active-session-per-connection",
"deprecation": {
"replacement": "spring.activemq.pool.max-sessions-per-connection"
}
},
{
"name": "spring.activemq.pool.reconnect-on-exception",
"type": "java.lang.Boolean",
"description": "Reset the connection when a \"JMSException\" occurs.",
"defaultValue": true,
"deprecation": {
"level": "error"
}
},
{
"name": "spring.activemq.pool.time-between-expiration-check",
"type": "java.time.Duration",
"description": "Time to sleep between runs of the idle connection eviction thread. When negative, no idle connection eviction thread runs.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": "-1ms"
},
{
"name": "spring.activemq.pool.use-anonymous-producers",
"type": "java.lang.Boolean",
"description": "Whether to use only one anonymous \"MessageProducer\" instance. Set it to false to create one \"MessageProducer\" every time one is required.",
"sourceType": "org.springframework.boot.jms.autoconfigure.JmsPoolConnectionFactoryProperties",
"defaultValue": true
},
{ {
"name": "spring.aop.auto", "name": "spring.aop.auto",
"type": "java.lang.Boolean", "type": "java.lang.Boolean",

1
spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@ -70,7 +70,6 @@ org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration
org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration
org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration
org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration
org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration

1
spring-boot-project/spring-boot-dependencies/build.gradle

@ -1983,6 +1983,7 @@ bom {
group("org.springframework.boot") { group("org.springframework.boot") {
modules = [ modules = [
"spring-boot", "spring-boot",
"spring-boot-activemq",
"spring-boot-actuator", "spring-boot-actuator",
"spring-boot-actuator-autoconfigure", "spring-boot-actuator-autoconfigure",
"spring-boot-amqp", "spring-boot-amqp",

1
spring-boot-project/spring-boot-docker-compose/build.gradle

@ -46,6 +46,7 @@ dependencies {
implementation("com.fasterxml.jackson.core:jackson-databind") implementation("com.fasterxml.jackson.core:jackson-databind")
implementation("com.fasterxml.jackson.module:jackson-module-parameter-names") implementation("com.fasterxml.jackson.module:jackson-module-parameter-names")
optional(project(":spring-boot-project:spring-boot-activemq"))
optional(project(":spring-boot-project:spring-boot-amqp")) optional(project(":spring-boot-project:spring-boot-amqp"))
optional(project(":spring-boot-project:spring-boot-autoconfigure-all")) optional(project(":spring-boot-project:spring-boot-autoconfigure-all"))
optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure")) optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure"))

2
spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactoryIntegrationTests.java

@ -16,7 +16,7 @@
package org.springframework.boot.docker.compose.service.connection.activemq; package org.springframework.boot.docker.compose.service.connection.activemq;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails;
import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest; import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest;
import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.container.TestImage;

2
spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests.java

@ -16,7 +16,7 @@
package org.springframework.boot.docker.compose.service.connection.activemq; package org.springframework.boot.docker.compose.service.connection.activemq;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails;
import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest; import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest;
import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.container.TestImage;

2
spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactory.java

@ -16,7 +16,7 @@
package org.springframework.boot.docker.compose.service.connection.activemq; package org.springframework.boot.docker.compose.service.connection.activemq;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails;
import org.springframework.boot.docker.compose.core.RunningService; import org.springframework.boot.docker.compose.core.RunningService;
import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory;
import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionSource; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionSource;

2
spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactory.java

@ -16,7 +16,7 @@
package org.springframework.boot.docker.compose.service.connection.activemq; package org.springframework.boot.docker.compose.service.connection.activemq;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails;
import org.springframework.boot.docker.compose.core.RunningService; import org.springframework.boot.docker.compose.core.RunningService;
import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory;
import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionSource; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionSource;

2
spring-boot-project/spring-boot-docs/build.gradle

@ -75,6 +75,7 @@ plugins.withType(EclipsePlugin) {
} }
dependencies { dependencies {
autoConfiguration(project(path: ":spring-boot-project:spring-boot-activemq", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-amqp", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-amqp", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-autoconfigure", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-autoconfigure", configuration: "autoConfigurationMetadata"))
@ -91,6 +92,7 @@ dependencies {
autoConfiguration(project(path: ":spring-boot-project:spring-boot-undertow", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-undertow", configuration: "autoConfigurationMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-activemq", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-actuator", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-actuator", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-amqp", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-amqp", configuration: "configurationPropertiesMetadata"))

3
spring-boot-project/spring-boot-starters/spring-boot-starter-activemq/build.gradle

@ -22,6 +22,5 @@ description = "Starter for JMS messaging using Apache ActiveMQ"
dependencies { dependencies {
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter")) api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-jms")) api(project(":spring-boot-project:spring-boot-activemq"))
api("org.apache.activemq:activemq-client")
} }

3
spring-boot-project/spring-boot-testcontainers/build.gradle

@ -29,7 +29,6 @@ dependencies {
api(project(":spring-boot-project:spring-boot-autoconfigure-all")) api(project(":spring-boot-project:spring-boot-autoconfigure-all"))
api("org.testcontainers:testcontainers") api("org.testcontainers:testcontainers")
dockerTestImplementation(project(":spring-boot-project:spring-boot-jms"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test")) dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
dockerTestImplementation("ch.qos.logback:logback-classic") dockerTestImplementation("ch.qos.logback:logback-classic")
@ -38,7 +37,6 @@ dependencies {
dockerTestImplementation("com.hazelcast:hazelcast") dockerTestImplementation("com.hazelcast:hazelcast")
dockerTestImplementation("io.micrometer:micrometer-registry-otlp") dockerTestImplementation("io.micrometer:micrometer-registry-otlp")
dockerTestImplementation("io.rest-assured:rest-assured") dockerTestImplementation("io.rest-assured:rest-assured")
dockerTestImplementation("org.apache.activemq:activemq-client")
dockerTestImplementation("org.apache.activemq:artemis-jakarta-client") dockerTestImplementation("org.apache.activemq:artemis-jakarta-client")
dockerTestImplementation("org.apache.cassandra:java-driver-core") { dockerTestImplementation("org.apache.cassandra:java-driver-core") {
exclude group: "org.slf4j", module: "jcl-over-slf4j" exclude group: "org.slf4j", module: "jcl-over-slf4j"
@ -70,6 +68,7 @@ dependencies {
dockerTestRuntimeOnly("org.flywaydb:flyway-database-postgresql") dockerTestRuntimeOnly("org.flywaydb:flyway-database-postgresql")
dockerTestRuntimeOnly("org.postgresql:postgresql") dockerTestRuntimeOnly("org.postgresql:postgresql")
optional(project(":spring-boot-project:spring-boot-activemq"))
optional(project(":spring-boot-project:spring-boot-amqp")) optional(project(":spring-boot-project:spring-boot-amqp"))
optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure")) optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure"))
optional("org.springframework:spring-test") optional("org.springframework:spring-test")

2
spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQClassicContainerConnectionDetailsFactoryIntegrationTests.java

@ -27,8 +27,8 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration;
import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration; import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.container.TestImage;

2
spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactoryIntegrationTests.java

@ -26,8 +26,8 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration;
import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration; import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.SymptomaActiveMQContainer; import org.springframework.boot.testsupport.container.SymptomaActiveMQContainer;

2
spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQClassicContainerConnectionDetailsFactory.java

@ -18,7 +18,7 @@ package org.springframework.boot.testcontainers.service.connection.activemq;
import org.testcontainers.activemq.ActiveMQContainer; import org.testcontainers.activemq.ActiveMQContainer;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnection;

2
spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactory.java

@ -19,7 +19,7 @@ package org.springframework.boot.testcontainers.service.connection.activemq;
import org.testcontainers.containers.Container; import org.testcontainers.containers.Container;
import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.GenericContainer;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnection;

Loading…
Cancel
Save