Skip to content

Commit 8557355

Browse files
committed
ARTEMIS-5889 Support reload of connection router config
Support connection routers being added, updated or removed via configuration updates either XML or via broker properties.
1 parent 2e390b4 commit 8557355

File tree

13 files changed

+809
-102
lines changed

13 files changed

+809
-102
lines changed

artemis-server/src/main/java/org/apache/activemq/artemis/core/config/routing/CacheConfiguration.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
package org.apache.activemq.artemis.core.config.routing;
1818

1919
import java.io.Serializable;
20+
import java.util.Objects;
2021

2122
public class CacheConfiguration implements Serializable {
22-
private boolean persisted = false;
23+
24+
private boolean persisted;
2325

2426
private int timeout = 0;
2527

@@ -43,4 +45,22 @@ public CacheConfiguration setTimeout(int timeout) {
4345
this.timeout = timeout;
4446
return this;
4547
}
48+
49+
@Override
50+
public int hashCode() {
51+
return Objects.hash(persisted, timeout);
52+
}
53+
54+
@Override
55+
public boolean equals(Object obj) {
56+
if (this == obj) {
57+
return true;
58+
}
59+
60+
if (obj instanceof CacheConfiguration other) {
61+
return persisted == other.persisted && timeout == other.timeout;
62+
}
63+
64+
return false;
65+
}
4666
}

artemis-server/src/main/java/org/apache/activemq/artemis/core/config/routing/ConnectionRouterConfiguration.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.apache.activemq.artemis.core.server.routing.KeyType;
2020

2121
import java.io.Serializable;
22+
import java.util.Objects;
2223

2324
public class ConnectionRouterConfiguration implements Serializable {
2425

@@ -92,4 +93,28 @@ public ConnectionRouterConfiguration setPoolConfiguration(PoolConfiguration pool
9293
this.poolConfiguration = poolConfiguration;
9394
return this;
9495
}
96+
97+
@Override
98+
public int hashCode() {
99+
return Objects.hash(cacheConfiguration, keyFilter, keyType, localTargetFilter, name, policyConfiguration, poolConfiguration);
100+
}
101+
102+
@Override
103+
public boolean equals(Object obj) {
104+
if (this == obj) {
105+
return true;
106+
}
107+
108+
if (obj instanceof ConnectionRouterConfiguration other) {
109+
return Objects.equals(cacheConfiguration, other.cacheConfiguration) &&
110+
Objects.equals(keyFilter, other.keyFilter) &&
111+
keyType == other.keyType &&
112+
Objects.equals(localTargetFilter, other.localTargetFilter) &&
113+
Objects.equals(name, other.name) &&
114+
Objects.equals(policyConfiguration, other.policyConfiguration) &&
115+
Objects.equals(poolConfiguration, other.poolConfiguration);
116+
}
117+
118+
return false;
119+
}
95120
}

artemis-server/src/main/java/org/apache/activemq/artemis/core/config/routing/NamedPropertyConfiguration.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818

1919
import java.io.Serializable;
2020
import java.util.Map;
21+
import java.util.Objects;
2122

2223
public class NamedPropertyConfiguration implements Serializable {
24+
2325
private String name;
2426

2527
private Map<String, String> properties;
@@ -41,4 +43,22 @@ public NamedPropertyConfiguration setProperties(Map<String, String> properties)
4143
this.properties = properties;
4244
return this;
4345
}
46+
47+
@Override
48+
public int hashCode() {
49+
return Objects.hash(name, properties);
50+
}
51+
52+
@Override
53+
public boolean equals(Object obj) {
54+
if (this == obj) {
55+
return true;
56+
}
57+
58+
if (obj instanceof NamedPropertyConfiguration other) {
59+
return Objects.equals(name, other.name) && Objects.equals(properties, other.properties);
60+
}
61+
62+
return false;
63+
}
4464
}

artemis-server/src/main/java/org/apache/activemq/artemis/core/config/routing/PoolConfiguration.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,21 @@
1818

1919
import java.io.Serializable;
2020
import java.util.List;
21+
import java.util.Objects;
2122

2223
public class PoolConfiguration implements Serializable {
24+
2325
private String username;
2426

2527
private String password;
2628

27-
private boolean localTargetEnabled = false;
29+
private boolean localTargetEnabled;
2830

29-
private String clusterConnection = null;
31+
private String clusterConnection;
3032

31-
private List<String> staticConnectors = null;
33+
private List<String> staticConnectors;
3234

33-
private String discoveryGroupName = null;
35+
private String discoveryGroupName;
3436

3537
private int checkPeriod = 5000;
3638

@@ -118,4 +120,31 @@ public PoolConfiguration setDiscoveryGroupName(String discoveryGroupName) {
118120
this.discoveryGroupName = discoveryGroupName;
119121
return this;
120122
}
123+
124+
@Override
125+
public int hashCode() {
126+
return Objects.hash(checkPeriod, clusterConnection, discoveryGroupName, localTargetEnabled, password, quorumSize, quorumTimeout, staticConnectors,
127+
username);
128+
}
129+
130+
@Override
131+
public boolean equals(Object obj) {
132+
if (this == obj) {
133+
return true;
134+
}
135+
136+
if (obj instanceof PoolConfiguration other) {
137+
return checkPeriod == other.checkPeriod &&
138+
Objects.equals(clusterConnection, other.clusterConnection) &&
139+
Objects.equals(discoveryGroupName, other.discoveryGroupName) &&
140+
localTargetEnabled == other.localTargetEnabled &&
141+
Objects.equals(password, other.password) &&
142+
quorumSize == other.quorumSize &&
143+
quorumTimeout == other.quorumTimeout &&
144+
Objects.equals(staticConnectors, other.staticConnectors) &&
145+
Objects.equals(username, other.username);
146+
}
147+
148+
return false;
149+
}
121150
}

artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3388,9 +3388,9 @@ synchronized boolean initialisePart1(boolean scalingDown) throws Exception {
33883388

33893389
federationManager.deploy();
33903390

3391-
connectionRouterManager = new ConnectionRouterManager(configuration, this, scheduledPool);
3391+
connectionRouterManager = new ConnectionRouterManager(this, scheduledPool);
33923392

3393-
connectionRouterManager.deploy();
3393+
connectionRouterManager.deploy(configuration);
33943394

33953395
remotingService = new RemotingServiceImpl(clusterManager, configuration, this, managementService, scheduledPool, protocolManagerFactories, executorFactory.getExecutor(), serviceRegistry);
33963396

@@ -4696,6 +4696,7 @@ private void reloadConfigurationFile(URL xmlConfigUri) throws Exception {
46964696
configuration.setAcceptorConfigurations(config.getAcceptorConfigurations());
46974697
configuration.setAMQPConnectionConfigurations(config.getAMQPConnection());
46984698
configuration.setPurgePageFolders(config.isPurgePageFolders());
4699+
configuration.setConnectionRouters(config.getConnectionRouters());
46994700
}
47004701
configuration.parseProperties(propertiesFileUrl);
47014702
updateStatus(ServerStatus.CONFIGURATION_COMPONENT, configuration.getStatus());
@@ -4805,6 +4806,9 @@ private void deployReloadableConfigFromConfiguration() throws Exception {
48054806

48064807
recoverStoredConnectors();
48074808

4809+
ActiveMQServerLogger.LOGGER.reloadingConfiguration("connection routers");
4810+
connectionRouterManager.update(configuration);
4811+
48084812
ActiveMQServerLogger.LOGGER.reloadingConfiguration("protocol services");
48094813
updateProtocolServices();
48104814
}

0 commit comments

Comments
 (0)