You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Miroslav Novak (JIRA)" <ji...@apache.org> on 2016/05/31 11:27:12 UTC

[jira] [Commented] (ARTEMIS-546) Allow to disable client-side load-balancing

    [ https://issues.apache.org/jira/browse/ARTEMIS-546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15307591#comment-15307591 ] 

Miroslav Novak commented on ARTEMIS-546:
----------------------------------------

Looking at the code in {{ServerLocatorImpl.selectConnector()}}, I'm not sure if use of {{loadBalancingPolicy}} when {{usedTopology}} is {{null}} is valid as we should iterate over them everytime. Currently we iterate over them because round robin policy is used by default.

{code}
private TransportConfiguration selectConnector() {
      Pair<TransportConfiguration, TransportConfiguration>[] usedTopology;

      synchronized (topologyArrayGuard) {
         usedTopology = topologyArray;
      }

      synchronized (this) {
         // if the topologyArray is null, we will use the initialConnectors
         if (usedTopology != null) {
            if (logger.isTraceEnabled()) {
               logger.trace("Selecting connector from toplogy.");
            }
            int pos = loadBalancingPolicy.select(usedTopology.length);
            Pair<TransportConfiguration, TransportConfiguration> pair = usedTopology[pos];

            return pair.getA();
         }
         else {
            // Get from initialconnectors
            if (logger.isTraceEnabled()) {
               logger.trace("Selecting connector from initial connectors.");
            }

            int pos = loadBalancingPolicy.select(initialConnectors.length);

            return initialConnectors[pos];
         }
      }
   }
{code}

> Allow to disable client-side load-balancing
> -------------------------------------------
>
>                 Key: ARTEMIS-546
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-546
>             Project: ActiveMQ Artemis
>          Issue Type: New Feature
>          Components: Broker
>    Affects Versions: 1.3.0
>            Reporter: Miroslav Novak
>
> In case when user wants to define client side load-balancing on its own and for each client specify connector to node in cluster to which it must connect then there is no way do it by current load-balancing policies.
> Interface {{ConnectionLoadBalancingPolicy}} does not allow to say to which node to connect based on connector information which was used in configuration connection factory. 
> Idea is to allow to disable load-balancing policy. When load-balancing policy is disabled then it will iterate through initial connectors (in sequence as they were configured) to create connection to remote broker. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)