You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2021/10/20 08:44:25 UTC

[activemq-artemis] branch main updated: ARTEMIS-3533 - respect extra url parameters from federation connector-ref

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

gtully pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 3259791  ARTEMIS-3533 - respect extra url parameters from federation connector-ref
3259791 is described below

commit 3259791bbb54e6241246618bb8f097370976cc34
Author: gtully <ga...@gmail.com>
AuthorDate: Tue Oct 19 17:10:42 2021 +0100

    ARTEMIS-3533 - respect extra url parameters from federation connector-ref
---
 .../core/server/federation/FederationConnection.java      | 15 +++++++++++++++
 .../federation/FederatedServerLocatorConfigTest.java      | 13 ++++---------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederationConnection.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederationConnection.java
index b88617f..bcbdc1c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederationConnection.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederationConnection.java
@@ -17,6 +17,7 @@
 
 package org.apache.activemq.artemis.core.server.federation;
 
+import java.util.Map;
 import org.apache.activemq.artemis.api.core.ActiveMQSessionCreationException;
 import org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration;
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
@@ -26,6 +27,7 @@ import org.apache.activemq.artemis.api.core.client.ServerLocator;
 import org.apache.activemq.artemis.core.config.Configuration;
 import org.apache.activemq.artemis.core.config.federation.FederationConnectionConfiguration;
 import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
+import org.apache.activemq.artemis.utils.uri.BeanSupport;
 
 public class FederationConnection {
 
@@ -39,6 +41,7 @@ public class FederationConnection {
    public FederationConnection(Configuration configuration, String name, FederationConnectionConfiguration config) {
       this.config = config;
       this.circuitBreakerTimeout = config.getCircuitBreakerTimeout();
+      Map<String, Object> possibleLocatorParameters = null;
       if (config.getDiscoveryGroupName() != null) {
          DiscoveryGroupConfiguration discoveryGroupConfiguration = configuration.getDiscoveryGroupConfigurations().get(config.getDiscoveryGroupName());
          if (discoveryGroupConfiguration == null) {
@@ -67,6 +70,10 @@ public class FederationConnection {
          } else {
             serverLocator = ActiveMQClient.createServerLocatorWithoutHA(tcConfigs);
          }
+
+         if (tcConfigs.length > 0) {
+            possibleLocatorParameters = tcConfigs[0].getExtraParams();
+         }
       }
 
       if (!config.isHA()) {
@@ -83,6 +90,14 @@ public class FederationConnection {
       serverLocator.setCallTimeout(config.getCallTimeout());
       serverLocator.setCallFailoverTimeout(config.getCallFailoverTimeout());
 
+      // let url parameters override
+      if (possibleLocatorParameters != null) {
+         try {
+            BeanSupport.setData(serverLocator, possibleLocatorParameters);
+         } catch (Exception ignoredAsErrorsVisibleViaBeanUtilsLogging) {
+         }
+      }
+
    }
 
    public synchronized void start() {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederatedServerLocatorConfigTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederatedServerLocatorConfigTest.java
index c40d35b..e1745f8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederatedServerLocatorConfigTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/federation/FederatedServerLocatorConfigTest.java
@@ -17,7 +17,6 @@
 package org.apache.activemq.artemis.tests.integration.federation;
 
 import java.util.HashMap;
-import java.util.Map;
 
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
 import org.apache.activemq.artemis.core.config.Configuration;
@@ -60,14 +59,8 @@ public class FederatedServerLocatorConfigTest extends FederatedTestBase {
    public void testFederatedAddressServerLocatorConfigFromUrl() throws Exception {
       String address = getName();
 
-      // we still won't pick up url params, restricted locator config is explicit
-      // bundling getUseTopologyForLoadBalancing with HA=false is consistent with simplification
       String connectorName = "server1WithUrlParams";
-      Map<String, Object> params = new HashMap<>();
-      params.put("host", "localhost");
-      params.put("port",  org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants.DEFAULT_PORT + 1);
-
-      getServer(0).getConfiguration().addConnectorConfiguration(connectorName, new TransportConfiguration(NETTY_CONNECTOR_FACTORY, params));
+      getServer(0).getConfiguration().addConnectorConfiguration(connectorName, "tcp://localhost:" + (org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants.DEFAULT_PORT + 1) + "?ackBatchSize=100&consumerWindowSize=-1");
 
       FederationConfiguration federationConfiguration0 = FederatedTestUtil.createAddressUpstreamFederationConfiguration("server1WithUrlParams", address, 2);
       for (FederationUpstreamConfiguration upstreamConfiguration : federationConfiguration0.getUpstreamConfigurations()) {
@@ -77,10 +70,12 @@ public class FederatedServerLocatorConfigTest extends FederatedTestBase {
       getServer(0).getFederationManager().deploy();
 
 
-      // lets peek at the server locator
+      // let's peek at the server locator
       Federation fed = getServer(0).getFederationManager().get(federationConfiguration0.getName());
       assertNotNull(fed);
       FederationUpstream federationUpstream = fed.get(connectorName);
       assertFalse(federationUpstream.getConnection().clientSessionFactory().getServerLocator().getUseTopologyForLoadBalancing());
+      assertEquals(100, federationUpstream.getConnection().clientSessionFactory().getServerLocator().getAckBatchSize());
+      assertEquals(-1, federationUpstream.getConnection().clientSessionFactory().getServerLocator().getConsumerWindowSize());
    }
 }