You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2024/03/06 18:16:04 UTC

(camel) 01/08: CAMEL-20479: delay broker configuration

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 50a50e83599023ac9b3ed8924719180bcc6c18aa
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Feb 28 11:14:30 2024 +0100

    CAMEL-20479: delay broker configuration
    
    Delay configuring broker to the moment it is about to start to reduce the incidence of trying to reuse acceptors
---
 .../services/AbstractArtemisEmbeddedService.java   | 22 ++++++++++++++++++----
 .../infra/artemis/services/ArtemisAMQPService.java |  3 ---
 .../services/ArtemisEmbeddedServiceBuilder.java    | 10 ++++------
 3 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java
index 058344c3581..9e3bb4dd4e0 100644
--- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java
+++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java
@@ -45,16 +45,23 @@ public abstract class AbstractArtemisEmbeddedService implements ArtemisService,
 
     protected final EmbeddedActiveMQ embeddedBrokerService;
     private final Configuration artemisConfiguration;
+    private Consumer<Configuration> customConfigurator;
+    private final int port;
 
     public AbstractArtemisEmbeddedService() {
         this(AvailablePortFinder.getNextAvailable());
     }
 
+    /**
+     * This is needed for some tests that check reliability of the components by defining the port in advance, trying to connect
+     * first starting the service later
+     * @param port the port to use
+     */
     protected AbstractArtemisEmbeddedService(int port) {
         embeddedBrokerService = new EmbeddedActiveMQ();
         artemisConfiguration = new ConfigurationImpl();
 
-        embeddedBrokerService.setConfiguration(configure(port));
+        this.port = port;
     }
 
     private synchronized Configuration configure(int port) {
@@ -67,13 +74,18 @@ public abstract class AbstractArtemisEmbeddedService implements ArtemisService,
         artemisConfiguration.setJMXManagementEnabled(false);
         artemisConfiguration.setMaxDiskUsage(98);
 
-        return configure(artemisConfiguration, port, brokerId);
+        final Configuration config = configure(artemisConfiguration, port, brokerId);
+        if (customConfigurator != null) {
+            customConfigurator.accept(config);
+        }
+
+        return config;
     }
 
     protected abstract Configuration configure(Configuration artemisConfiguration, int port, int brokerId);
 
-    public void customConfiguration(Consumer<Configuration> configuration) {
-        configuration.accept(artemisConfiguration);
+    public void customConfiguration(Consumer<Configuration> configurator) {
+        this.customConfigurator = configurator;
     }
 
     @Override
@@ -103,6 +115,8 @@ public abstract class AbstractArtemisEmbeddedService implements ArtemisService,
     public synchronized void initialize() {
         try {
             if (embeddedBrokerService.getActiveMQServer() == null || !embeddedBrokerService.getActiveMQServer().isStarted()) {
+                embeddedBrokerService.setConfiguration(configure(port));
+
                 embeddedBrokerService.start();
 
                 embeddedBrokerService.getActiveMQServer().waitForActivation(20, TimeUnit.SECONDS);
diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java
index b5e9c023ae4..eed04d75b06 100644
--- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java
+++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java
@@ -29,9 +29,6 @@ public class ArtemisAMQPService extends AbstractArtemisEmbeddedService {
     private String brokerURL;
     private int amqpPort;
 
-    public ArtemisAMQPService() {
-    }
-
     @Override
     protected Configuration configure(Configuration artemisConfiguration, int port, int brokerId) {
         amqpPort = port;
diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisEmbeddedServiceBuilder.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisEmbeddedServiceBuilder.java
index 4285e5c3e9a..b4ffbad9be6 100644
--- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisEmbeddedServiceBuilder.java
+++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisEmbeddedServiceBuilder.java
@@ -23,7 +23,7 @@ import org.apache.activemq.artemis.core.config.Configuration;
 public class ArtemisEmbeddedServiceBuilder {
 
     private boolean isPersistent;
-    private Consumer<Configuration> artemisConfiguration;
+    private Consumer<Configuration> customConfigurator;
 
     public ArtemisEmbeddedServiceBuilder() {
     }
@@ -34,8 +34,8 @@ public class ArtemisEmbeddedServiceBuilder {
         return this;
     }
 
-    public ArtemisEmbeddedServiceBuilder withCustomConfiguration(Consumer<Configuration> configuration) {
-        artemisConfiguration = configuration;
+    public ArtemisEmbeddedServiceBuilder withCustomConfiguration(Consumer<Configuration> customConfigurator) {
+        this.customConfigurator = customConfigurator;
 
         return this;
     }
@@ -48,9 +48,7 @@ public class ArtemisEmbeddedServiceBuilder {
             artemisService = new ArtemisVMService();
         }
 
-        if (artemisService != null) {
-            artemisService.customConfiguration(artemisConfiguration);
-        }
+        artemisService.customConfiguration(customConfigurator);
 
         return artemisService;
     }