You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2019/02/20 17:20:42 UTC
[activemq-artemis] branch 2.6.x updated: ARTEMIS-2254 support
useTopologyForLoadBalancing on JMS cf config
This is an automated email from the ASF dual-hosted git repository.
jbertram pushed a commit to branch 2.6.x
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/2.6.x by this push:
new 5dfd6f7 ARTEMIS-2254 support useTopologyForLoadBalancing on JMS cf config
5dfd6f7 is described below
commit 5dfd6f7c1f1cea532b66d43bffb59bd5097f568f
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Mon Feb 18 15:32:31 2019 -0600
ARTEMIS-2254 support useTopologyForLoadBalancing on JMS cf config
(cherry picked from commit 0cffe03d2ed84ee46d89a9b9fe6cbfbd65b343e3)
---
.../config/ConnectionFactoryConfiguration.java | 4 +++
.../impl/ConnectionFactoryConfigurationImpl.java | 22 +++++++++++--
.../jms/server/impl/JMSServerManagerImpl.java | 1 +
.../ConnectionFactorySerializationTest.java | 37 ++++++++++++++++++++++
4 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
index eee7431..97a1b64 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/ConnectionFactoryConfiguration.java
@@ -197,4 +197,8 @@ public interface ConnectionFactoryConfiguration extends EncodingSupport {
boolean isEnableSharedClientID();
ConnectionFactoryConfiguration setEnableSharedClientID(boolean enabled);
+
+ boolean getUseTopologyForLoadBalancing();
+
+ ConnectionFactoryConfiguration setUseTopologyForLoadBalancing(boolean useTopologyForLoadBalancing);
}
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
index e1718bd..259b2c0 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/config/impl/ConnectionFactoryConfigurationImpl.java
@@ -129,6 +129,8 @@ public class ConnectionFactoryConfigurationImpl implements ConnectionFactoryConf
private boolean enableSharedClientID = ActiveMQClient.DEFAULT_ENABLED_SHARED_CLIENT_ID;
+ private boolean useTopologyForLoadBalancing = ActiveMQClient.DEFAULT_USE_TOPOLOGY_FOR_LOADBALANCING;
+
// Static --------------------------------------------------------
@@ -643,8 +645,9 @@ public class ConnectionFactoryConfigurationImpl implements ConnectionFactoryConf
enable1xPrefixes = buffer.readableBytes() > 0 ? buffer.readBoolean() : ActiveMQJMSClient.DEFAULT_ENABLE_1X_PREFIXES;
- enableSharedClientID = buffer.readableBytes() > 0 ? buffer.readBoolean() : ActiveMQClient.DEFAULT_ENABLED_SHARED_CLIENT_ID;
+ enableSharedClientID = buffer.readableBytes() > 0 ? BufferHelper.readNullableBoolean(buffer) : ActiveMQClient.DEFAULT_ENABLED_SHARED_CLIENT_ID;
+ useTopologyForLoadBalancing = buffer.readableBytes() > 0 ? BufferHelper.readNullableBoolean(buffer) : ActiveMQClient.DEFAULT_USE_TOPOLOGY_FOR_LOADBALANCING;
}
@Override
@@ -738,6 +741,8 @@ public class ConnectionFactoryConfigurationImpl implements ConnectionFactoryConf
buffer.writeBoolean(enable1xPrefixes);
BufferHelper.writeNullableBoolean(buffer, enableSharedClientID);
+
+ BufferHelper.writeNullableBoolean(buffer, useTopologyForLoadBalancing);
}
@Override
@@ -856,7 +861,9 @@ public class ConnectionFactoryConfigurationImpl implements ConnectionFactoryConf
DataConstants.SIZE_BOOLEAN +
// enable1xPrefixes;
- BufferHelper.sizeOfNullableBoolean(enableSharedClientID);
+ BufferHelper.sizeOfNullableBoolean(enableSharedClientID) +
+
+ BufferHelper.sizeOfNullableBoolean(useTopologyForLoadBalancing);
return size;
}
@@ -936,6 +943,17 @@ public class ConnectionFactoryConfigurationImpl implements ConnectionFactoryConf
return enableSharedClientID;
}
+ @Override
+ public ConnectionFactoryConfiguration setUseTopologyForLoadBalancing(boolean useTopologyForLoadBalancing) {
+ this.useTopologyForLoadBalancing = useTopologyForLoadBalancing;
+ return this;
+ }
+
+ @Override
+ public boolean getUseTopologyForLoadBalancing() {
+ return useTopologyForLoadBalancing;
+ }
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
index 27abbbe..2beb9fe 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
@@ -1222,6 +1222,7 @@ public class JMSServerManagerImpl implements JMSServerManager, ActivateCallback
cf.setInitialMessagePacketSize(cfConfig.getInitialMessagePacketSize());
cf.setEnable1xPrefixes(cfConfig.isEnable1xPrefixes());
cf.setEnableSharedClientID(cfConfig.isEnableSharedClientID());
+ cf.setUseTopologyForLoadBalancing(cfConfig.getUseTopologyForLoadBalancing());
return cf;
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/ConnectionFactorySerializationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/ConnectionFactorySerializationTest.java
index 7366bd9..1ccab41 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/ConnectionFactorySerializationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/connection/ConnectionFactorySerializationTest.java
@@ -32,6 +32,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration;
import org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory;
import org.apache.activemq.artemis.api.core.JGroupsPropertiesBroadcastEndpointFactory;
@@ -151,6 +153,41 @@ public class ConnectionFactorySerializationTest extends JMSTestBase {
}
}
+ @Test
+ public void testConnectionFactoryEncodeDecode() throws Exception {
+ jmsServer.getActiveMQServer().getConfiguration().addConnectorConfiguration("foo", "tcp://localhost:1234");
+
+ ArrayList<String> connectorNames = new ArrayList<>();
+ connectorNames.add("foo");
+ ConnectionFactoryConfiguration cfc1 = new ConnectionFactoryConfigurationImpl()
+ .setName("MyConnectionFactory")
+ .setConnectorNames(connectorNames)
+ .setUseTopologyForLoadBalancing(false)
+ .setEnableSharedClientID(true);
+
+ ActiveMQBuffer buffer = ActiveMQBuffers.dynamicBuffer(1024);
+ cfc1.encode(buffer);
+ byte[] bytes = new byte[buffer.readableBytes()];
+ buffer.readBytes(bytes);
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ outputStream.write(bytes);
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+ buffer = ActiveMQBuffers.dynamicBuffer(1024);
+ while (true) {
+ int byteRead = inputStream.read();
+ if (byteRead < 0) {
+ break;
+ }
+
+ buffer.writeByte((byte)byteRead);
+ }
+ ConnectionFactoryConfigurationImpl cfc2 = new ConnectionFactoryConfigurationImpl();
+ cfc2.decode(buffer);
+
+ assertEquals(cfc1.getUseTopologyForLoadBalancing(), cfc2.getUseTopologyForLoadBalancing());
+ assertEquals(cfc1.isEnableSharedClientID(), cfc2.isEnableSharedClientID());
+ }
+
private void createDiscoveryFactoryUDP() throws Exception {
// Deploy a connection factory with discovery
List<String> bindings = new ArrayList<>();