protected static final ClusterConnectionConfiguration setupClusterConn(String connectorName, String... connectors) { List<String> connectorList = new LinkedList<>(); for (String conn : connectors) { connectorList.add(conn); } ClusterConnectionConfiguration ccc = new ClusterConnectionConfiguration().setName("cluster1").setAddress("jms").setConnectorName(connectorName).setRetryInterval(10).setDuplicateDetection(false).setMessageLoadBalancingType(MessageLoadBalancingType.STRICT).setConfirmationWindowSize(1).setStaticConnectors(connectorList); return ccc; }
class OrderedConsumerHolder implements Comparable<OrderedConsumerHolder> { ConsumerHolder consumer; int order; @Override public int compareTo(final OrderedConsumerHolder o) { int thisOrder = order; int otherOrder = o.order; return thisOrder < otherOrder ? -1 : thisOrder == otherOrder ? 0 : 1; } }
@Override public ClusterConnectionConfiguration addClusterConfiguration(String name, String uri) throws Exception { ClusterConnectionConfiguration newConfig = new ClusterConnectionConfiguration(new URI(uri)).setName(name); clusterConfigurations.add(newConfig); return newConfig; }
ClusterConnectionConfiguration config = new ClusterConnectionConfiguration().setName(name).setAddress(address).setConnectorName(connectorName).setMinLargeMessageSize(minLargeMessageSize).setClientFailureCheckPeriod(clientFailureCheckPeriod).setConnectionTTL(connectionTTL).setRetryInterval(retryInterval).setRetryIntervalMultiplier(retryIntervalMultiplier).setMaxRetryInterval(maxRetryInterval).setInitialConnectAttempts(initialConnectAttempts).setReconnectAttempts(reconnectAttempts).setCallTimeout(callTimeout).setCallFailoverTimeout(callFailoverTimeout).setDuplicateDetection(duplicateDetection).setMessageLoadBalancingType(messageLoadBalancingType).setMaxHops(maxHops).setConfirmationWindowSize(confirmationWindowSize).setProducerWindowSize(producerWindowSize).setAllowDirectConnectionsOnly(allowDirectConnectionsOnly).setClusterNotificationInterval(clusterNotificationInterval).setClusterNotificationAttempts(clusterNotificationAttempts); config.setStaticConnectors(staticConnectorNames); } else { config.setDiscoveryGroupName(discoveryGroupName);
clusterConf0 = new ClusterConnectionConfiguration() .setName("cluster0") .setAddress("queues") .setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND) .setMaxHops(1) .setInitialConnectAttempts(8) .setReconnectAttempts(10) .setRetryInterval(250) .setMaxRetryInterval(4000) .setRetryIntervalMultiplier(2.0); clusterConf1 = new ClusterConnectionConfiguration() .setName("cluster0") .setAddress("queues") .setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND) .setMaxHops(1) .setInitialConnectAttempts(8) .setReconnectAttempts(10) .setRetryInterval(250) .setMaxRetryInterval(4000) .setRetryIntervalMultiplier(2.0);
protected void setupClusterConnection(ClusterConnectionConfiguration clusterConf, final boolean netty, final int nodeFrom, final int... nodesTo) { ActiveMQServer serverFrom = servers[nodeFrom]; if (serverFrom == null) { throw new IllegalStateException("No server at node " + nodeFrom); } TransportConfiguration connectorFrom = createTransportConfiguration(netty, false, generateParams(nodeFrom, netty)); serverFrom.getConfiguration().getConnectorConfigurations().put(connectorFrom.getName(), connectorFrom); List<String> pairs = getClusterConnectionTCNames(netty, serverFrom, nodesTo); Configuration config = serverFrom.getConfiguration(); clusterConf.setConnectorName(connectorFrom.getName()).setConfirmationWindowSize(1024).setStaticConnectors(pairs); config.getClusterConfigurations().add(clusterConf); }
@Test public void testGetClusterConnectionNames() throws Exception { String clusterConnection1 = RandomUtil.randomString(); String clusterConnection2 = RandomUtil.randomString(); ActiveMQServerControl serverControl = createManagementControl(); Assert.assertFalse(ActiveMQServerControlTest.contains(clusterConnection1, serverControl.getClusterConnectionNames())); Assert.assertFalse(ActiveMQServerControlTest.contains(clusterConnection2, serverControl.getClusterConnectionNames())); server.stop(); server .getConfiguration() .addClusterConfiguration(new ClusterConnectionConfiguration().setName(clusterConnection1).setConnectorName(connectorConfig.getName())) .addClusterConfiguration(new ClusterConnectionConfiguration().setName(clusterConnection2).setConnectorName(connectorConfig.getName())); server.start(); Assert.assertTrue(ActiveMQServerControlTest.contains(clusterConnection1, serverControl.getClusterConnectionNames())); Assert.assertTrue(ActiveMQServerControlTest.contains(clusterConnection2, serverControl.getClusterConnectionNames())); }
@Test public void testClusterConnectionStaticOnConstrcutor() throws Exception { ClusterConnectionConfiguration configuration = new ClusterConnectionConfiguration(new URI("static:(tcp://localhost:6556,tcp://localhost:6557)?minLargeMessageSize=132")); Assert.assertEquals(132, configuration.getMinLargeMessageSize()); Assert.assertEquals("tcp://localhost:6556", configuration.getCompositeMembers().getComponents()[0].toString()); Assert.assertEquals("tcp://localhost:6557", configuration.getCompositeMembers().getComponents()[1].toString()); }
@Override protected ClusterConnectionConfiguration internalNewObject(URI uri, Map<String, String> query, String param) throws Exception { ClusterConnectionConfiguration configuration = new ClusterConnectionConfiguration(); populateObject(uri, configuration); return configuration; }
final int clusterNotificationAttempts = ClusterConnectionDefinition.NOTIFICATION_ATTEMPTS.resolveModelAttribute(context, model).asInt(); ClusterConnectionConfiguration config = new ClusterConnectionConfiguration() .setName(name) .setAddress(address) .setConnectorName(connectorName) .setMinLargeMessageSize(minLargeMessageSize) .setClientFailureCheckPeriod(clientFailureCheckPeriod) .setConnectionTTL(connectionTTL) .setRetryInterval(retryInterval) .setRetryIntervalMultiplier(retryIntervalMultiplier) .setMaxRetryInterval(maxRetryInterval) .setInitialConnectAttempts(initialConnectAttempts) .setReconnectAttempts(reconnectAttempts) .setCallTimeout(callTimeout) .setCallFailoverTimeout(callFailoverTimeout) .setDuplicateDetection(duplicateDetection) .setMessageLoadBalancingType(MessageLoadBalancingType.valueOf(messageLoadBalancingType)) .setMaxHops(maxHops) .setConfirmationWindowSize(confirmationWindowSize) .setProducerWindowSize(producerWindowSize) .setClusterNotificationInterval(clusterNotificationInterval) .setClusterNotificationAttempts(clusterNotificationAttempts); config.setDiscoveryGroupName(discoveryGroupName); } else { config.setStaticConnectors(staticConnectors) .setAllowDirectConnectionsOnly(allowDirectOnly);
protected void setupClusterConnection(final String name, final String uri, int server) throws Exception { ActiveMQServer serverFrom = servers[server]; if (serverFrom == null) { throw new IllegalStateException("No server at node " + server); } ClusterConnectionConfiguration configuration = new ClusterConnectionConfiguration(new URI(uri)).setName(name); serverFrom.getConfiguration().addClusterConfiguration(configuration); }
protected static final ClusterConnectionConfiguration basicClusterConnectionConfig(String connectorName, String... connectors) { ArrayList<String> connectors0 = new ArrayList<>(); for (String c : connectors) { connectors0.add(c); } ClusterConnectionConfiguration clusterConnectionConfiguration = new ClusterConnectionConfiguration(). setName("cluster1").setAddress("jms").setConnectorName(connectorName). setRetryInterval(1000).setDuplicateDetection(false).setMaxHops(1). setConfirmationWindowSize(1).setMessageLoadBalancingType(MessageLoadBalancingType.STRICT). setStaticConnectors(connectors0); return clusterConnectionConfiguration; }
final int clusterNotificationAttempts = ClusterConnectionDefinition.NOTIFICATION_ATTEMPTS.resolveModelAttribute(context, model).asInt(); ClusterConnectionConfiguration config = new ClusterConnectionConfiguration() .setName(name) .setAddress(address) .setConnectorName(connectorName) .setMinLargeMessageSize(minLargeMessageSize) .setClientFailureCheckPeriod(clientFailureCheckPeriod) .setConnectionTTL(connectionTTL) .setRetryInterval(retryInterval) .setRetryIntervalMultiplier(retryIntervalMultiplier) .setMaxRetryInterval(maxRetryInterval) .setInitialConnectAttempts(initialConnectAttempts) .setReconnectAttempts(reconnectAttempts) .setCallTimeout(callTimeout) .setCallFailoverTimeout(callFailoverTimeout) .setDuplicateDetection(duplicateDetection) .setMessageLoadBalancingType(MessageLoadBalancingType.valueOf(messageLoadBalancingType)) .setMaxHops(maxHops) .setConfirmationWindowSize(confirmationWindowSize) .setProducerWindowSize(producerWindowSize) .setClusterNotificationInterval(clusterNotificationInterval) .setClusterNotificationAttempts(clusterNotificationAttempts); config.setDiscoveryGroupName(discoveryGroupName); } else { config.setStaticConnectors(staticConnectors) .setAllowDirectConnectionsOnly(allowDirectOnly);
@Override protected ClusterConnectionConfiguration createBasicClusterConfig(String connectorName, String... connectors) { ArrayList<String> connectors0 = new ArrayList<>(); for (String c : connectors) { connectors0.add(c); } ClusterConnectionConfiguration clusterConnectionConfiguration = new ClusterConnectionConfiguration(). setName("cluster1").setAddress("jms").setConnectorName(connectorName). setRetryInterval(1000).setDuplicateDetection(false).setMaxHops(1).setClientFailureCheckPeriod(100).setConnectionTTL(1000). setConfirmationWindowSize(1).setMessageLoadBalancingType(MessageLoadBalancingType.STRICT). setStaticConnectors(connectors0); return clusterConnectionConfiguration; }
private ClusterConnectionConfiguration createClusterConfig(final String name, final String address, final MessageLoadBalancingType messageLoadBalancingType, final int maxHops, TransportConfiguration connectorFrom, List<String> pairs) { return new ClusterConnectionConfiguration() .setName(name) .setAddress(address) .setConnectorName(connectorFrom.getName()) .setRetryInterval(250) .setMessageLoadBalancingType(messageLoadBalancingType) .setMaxHops(maxHops) .setConfirmationWindowSize(1024) .setStaticConnectors(pairs); }
protected void setupDiscoveryClusterConnection(final String name, final int node, final String discoveryGroupName, final String address, final MessageLoadBalancingType messageLoadBalancingType, final int maxHops, final boolean netty) { ActiveMQServer server = servers[node]; if (server == null) { throw new IllegalStateException("No server at node " + node); } TransportConfiguration connectorConfig = createTransportConfiguration(netty, false, generateParams(node, netty)); server.getConfiguration().getConnectorConfigurations().put(name, connectorConfig); Configuration config = server.getConfiguration(); ClusterConnectionConfiguration clusterConf = new ClusterConnectionConfiguration().setName(name).setAddress(address).setConnectorName(name).setRetryInterval(100).setDuplicateDetection(true).setMessageLoadBalancingType(messageLoadBalancingType).setMaxHops(maxHops).setConfirmationWindowSize(1024).setDiscoveryGroupName(discoveryGroupName); List<ClusterConnectionConfiguration> clusterConfs = config.getClusterConfigurations(); clusterConfs.add(clusterConf); }
protected void setupClusterConnectionWithBackups(final String name, final String address, final MessageLoadBalancingType messageLoadBalancingType, final int maxHops, final boolean netty, final int nodeFrom, final int[] nodesTo) { ActiveMQServer serverFrom = servers[nodeFrom]; if (serverFrom == null) { throw new IllegalStateException("No server at node " + nodeFrom); } TransportConfiguration connectorFrom = createTransportConfiguration(netty, false, generateParams(nodeFrom, netty)); serverFrom.getConfiguration().getConnectorConfigurations().put(name, connectorFrom); List<String> pairs = getClusterConnectionTCNames(netty, serverFrom, nodesTo); Configuration config = serverFrom.getConfiguration(); ClusterConnectionConfiguration clusterConf = new ClusterConnectionConfiguration().setName(name).setAddress(address).setConnectorName(name).setRetryInterval(250).setMessageLoadBalancingType(messageLoadBalancingType).setMaxHops(maxHops).setConfirmationWindowSize(1024).setStaticConnectors(pairs); config.getClusterConfigurations().add(clusterConf); }
private ActiveMQServer createServer1() throws Exception { Map<String, Object> params = new HashMap<>(); params.put(TransportConstants.CLUSTER_CONNECTION, "cc1"); params.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "1"); TransportConfiguration acceptor1VM1 = new TransportConfiguration(ActiveMQTestBase.INVM_ACCEPTOR_FACTORY, params, "acceptor-cc1"); params = new HashMap<>(); params.put(TransportConstants.CLUSTER_CONNECTION, "cc2"); params.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "2"); TransportConfiguration acceptor2VM1 = new TransportConfiguration(ActiveMQTestBase.INVM_ACCEPTOR_FACTORY, params, "acceptor-cc2"); List<String> connectTo = new ArrayList<>(); connectTo.add("other-cc1"); ClusterConnectionConfiguration server1CC1 = new ClusterConnectionConfiguration().setName("cc1").setAddress("jms").setConnectorName("local-cc1").setRetryInterval(250).setConfirmationWindowSize(1024).setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND).setStaticConnectors(connectTo); ArrayList<String> connectTo2 = new ArrayList<>(); connectTo2.add("other-cc2"); ClusterConnectionConfiguration server1CC2 = new ClusterConnectionConfiguration().setName("cc2").setAddress("jms").setConnectorName("local-cc2").setRetryInterval(250).setConfirmationWindowSize(1024).setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND).setStaticConnectors(connectTo2); // Server1 with two acceptors, each acceptor on a different cluster connection // talking to a different connector. // i.e. two cluster connections isolated on the same node Configuration config1 = createBasicConfig(1).addConnectorConfiguration("local-cc1", createInVMTransportConnectorConfig(1, "local-cc1")).addConnectorConfiguration("local-cc2", createInVMTransportConnectorConfig(2, "local-cc2")).addConnectorConfiguration("other-cc1", createInVMTransportConnectorConfig(3, "other-cc1")).addConnectorConfiguration("other-cc2", createInVMTransportConnectorConfig(4, "other-cc2")).addAcceptorConfiguration(acceptor1VM1).addAcceptorConfiguration(acceptor2VM1).addClusterConfiguration(server1CC1).addClusterConfiguration(server1CC2); return createServer(false, config1); }
private ActiveMQServer createServer2() throws Exception { Map<String, Object> params = new HashMap<>(); params.put(TransportConstants.CLUSTER_CONNECTION, "cc1"); params.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "3"); TransportConfiguration acceptor1VM1 = new TransportConfiguration(ActiveMQTestBase.INVM_ACCEPTOR_FACTORY, params, "acceptor-cc1"); params = new HashMap<>(); params.put(TransportConstants.CLUSTER_CONNECTION, "cc2"); params.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "4"); TransportConfiguration acceptor2VM1 = new TransportConfiguration(ActiveMQTestBase.INVM_ACCEPTOR_FACTORY, params, "acceptor-cc2"); List<String> connectTo = new ArrayList<>(); connectTo.add("other-cc1"); ClusterConnectionConfiguration server1CC1 = new ClusterConnectionConfiguration().setName("cc1").setAddress("jms").setConnectorName("local-cc1").setRetryInterval(250).setConfirmationWindowSize(1024).setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND).setStaticConnectors(connectTo); List<String> connectTo2 = new ArrayList<>(); connectTo2.add("other-cc2"); ClusterConnectionConfiguration server1CC2 = new ClusterConnectionConfiguration().setName("cc2").setAddress("jms").setConnectorName("local-cc2").setRetryInterval(250).setConfirmationWindowSize(1024).setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND).setStaticConnectors(connectTo2); // Server2 with two acceptors, each acceptor on a different cluster connection // talking to a different connector. // i.e. two cluster connections isolated on the same node Configuration config1 = createBasicConfig(2).addAcceptorConfiguration(acceptor1VM1).addAcceptorConfiguration(acceptor2VM1).addConnectorConfiguration("local-cc1", createInVMTransportConnectorConfig(3, "local-cc1")).addConnectorConfiguration("local-cc2", createInVMTransportConnectorConfig(4, "local-cc2")).addConnectorConfiguration("other-cc1", createInVMTransportConnectorConfig(1, "other-cc1")).addConnectorConfiguration("other-cc2", createInVMTransportConnectorConfig(2, "other-cc2")).addClusterConfiguration(server1CC1).addClusterConfiguration(server1CC2); return createServer(false, config1); }
protected void setupClusterConnection(final String name, final int nodeFrom, final int nodeTo, final String address, final MessageLoadBalancingType messageLoadBalancingType, final int maxHops, final boolean netty, final boolean allowDirectConnectionsOnly) { ActiveMQServer serverFrom = servers[nodeFrom]; if (serverFrom == null) { throw new IllegalStateException("No server at node " + nodeFrom); } TransportConfiguration connectorFrom = createTransportConfiguration(netty, false, generateParams(nodeFrom, netty)); serverFrom.getConfiguration().getConnectorConfigurations().put(name, connectorFrom); List<String> pairs = null; if (nodeTo != -1) { TransportConfiguration serverTotc = createTransportConfiguration(netty, false, generateParams(nodeTo, netty)); serverFrom.getConfiguration().getConnectorConfigurations().put(serverTotc.getName(), serverTotc); pairs = new ArrayList<>(); pairs.add(serverTotc.getName()); } Configuration config = serverFrom.getConfiguration(); ClusterConnectionConfiguration clusterConf = new ClusterConnectionConfiguration().setName(name).setAddress(address).setConnectorName(name).setRetryInterval(100).setMessageLoadBalancingType(messageLoadBalancingType).setMaxHops(maxHops).setConfirmationWindowSize(1024).setStaticConnectors(pairs).setAllowDirectConnectionsOnly(allowDirectConnectionsOnly); config.getClusterConfigurations().add(clusterConf); }