public synchronized void deployBridge(final BridgeConfiguration config) throws Exception { if (config.getName() == null) { ActiveMQServerLogger.LOGGER.bridgeNotUnique(); if (config.getQueueName() == null) { ActiveMQServerLogger.LOGGER.bridgeNoQueue(config.getName()); if (config.getForwardingAddress() == null) { ActiveMQServerLogger.LOGGER.bridgeNoForwardAddress(config.getName()); if (bridges.containsKey(config.getName())) { ActiveMQServerLogger.LOGGER.bridgeAlreadyDeployed(config.getName()); Transformer transformer = server.getServiceRegistry().getBridgeTransformer(config.getName(), config.getTransformerConfiguration()); Binding binding = postOffice.getBinding(new SimpleString(config.getQueueName())); ActiveMQServerLogger.LOGGER.bridgeQueueNotFound(config.getQueueName(), config.getName()); if (config.getDiscoveryGroupName() != null) { DiscoveryGroupConfiguration discoveryGroupConfiguration = configuration.getDiscoveryGroupConfigurations().get(config.getDiscoveryGroupName()); if (discoveryGroupConfiguration == null) { ActiveMQServerLogger.LOGGER.bridgeNoDiscoveryGroup(config.getDiscoveryGroupName()); if (config.isHA()) { serverLocator = (ServerLocatorInternal) ActiveMQClient.createServerLocatorWithHA(discoveryGroupConfiguration); } else { TransportConfiguration[] tcConfigs = configuration.getTransportConfigurations(config.getStaticConnectors());
static void createBridge(String name, BridgeConfiguration bridgeConfig, ActiveMQServerControl serverControl) { try { String transformerClassName = bridgeConfig.getTransformerConfiguration() != null ? bridgeConfig.getTransformerConfiguration().getClassName() : null; if (bridgeConfig.getDiscoveryGroupName() != null) { serverControl.createBridge(name, bridgeConfig.getQueueName(), bridgeConfig.getForwardingAddress(), bridgeConfig.getFilterString(), transformerClassName, bridgeConfig.getRetryInterval(), bridgeConfig.getRetryIntervalMultiplier(), bridgeConfig.getInitialConnectAttempts(), bridgeConfig.getReconnectAttempts(), bridgeConfig.isUseDuplicateDetection(), bridgeConfig.getConfirmationWindowSize(), bridgeConfig.getClientFailureCheckPeriod(), bridgeConfig.getDiscoveryGroupName(), true, bridgeConfig.isHA(), bridgeConfig.getUser(), bridgeConfig.getPassword()); } else { boolean first = true; String connectors = ""; for (String connector : bridgeConfig.getStaticConnectors()) { if (!first) { connectors += ","; serverControl.createBridge(name, bridgeConfig.getQueueName(), bridgeConfig.getForwardingAddress(), bridgeConfig.getFilterString(), transformerClassName, bridgeConfig.getRetryInterval(), bridgeConfig.getRetryIntervalMultiplier(), bridgeConfig.getInitialConnectAttempts(), bridgeConfig.getReconnectAttempts(), bridgeConfig.isUseDuplicateDetection(), bridgeConfig.getConfirmationWindowSize(), bridgeConfig.getClientFailureCheckPeriod(), connectors, false, bridgeConfig.isHA(), bridgeConfig.getUser(), bridgeConfig.getPassword());
if (bc.getName().equals("bridge1")) { Assert.assertEquals("bridge1", bc.getName()); Assert.assertEquals("queue1", bc.getQueueName()); Assert.assertEquals("minLargeMessageSize", 4194304, bc.getMinLargeMessageSize()); assertEquals("check-period", 31, bc.getClientFailureCheckPeriod()); assertEquals("connection time-to-live", 370, bc.getConnectionTTL()); Assert.assertEquals("bridge-forwarding-address1", bc.getForwardingAddress()); Assert.assertEquals("sku > 1", bc.getFilterString()); Assert.assertEquals("org.foo.BridgeTransformer", bc.getTransformerConfiguration().getClassName()); Assert.assertEquals(3, bc.getRetryInterval()); Assert.assertEquals(0.2, bc.getRetryIntervalMultiplier(), 0.0001); assertEquals("max retry interval", 10002, bc.getMaxRetryInterval()); Assert.assertEquals(2, bc.getReconnectAttempts()); Assert.assertEquals(true, bc.isUseDuplicateDetection()); Assert.assertEquals("connector1", bc.getStaticConnectors().get(0)); Assert.assertEquals(null, bc.getDiscoveryGroupName()); Assert.assertEquals(444, bc.getProducerWindowSize()); Assert.assertEquals(1073741824, bc.getConfirmationWindowSize()); Assert.assertEquals(ComponentConfigurationRoutingType.STRIP, bc.getRoutingType()); } else if (bc.getName().equals("bridge2")) { Assert.assertEquals("bridge2", bc.getName()); Assert.assertEquals("queue2", bc.getQueueName()); Assert.assertEquals("bridge-forwarding-address2", bc.getForwardingAddress()); Assert.assertEquals(null, bc.getFilterString()); Assert.assertEquals(null, bc.getTransformerConfiguration()); Assert.assertEquals(null, bc.getStaticConnectors()); Assert.assertEquals("dg1", bc.getDiscoveryGroupName()); Assert.assertEquals(568320, bc.getProducerWindowSize()); Assert.assertEquals(ComponentConfigurationRoutingType.PASS, bc.getRoutingType());
@Test public void testAttributes() throws Exception { checkResource(ObjectNameBuilder.DEFAULT.getBridgeObjectName(bridgeConfig.getName())); BridgeControl bridgeControl = createBridgeControl(bridgeConfig.getName(), mbeanServer); Assert.assertEquals(bridgeConfig.getName(), bridgeControl.getName()); Assert.assertEquals(bridgeConfig.getDiscoveryGroupName(), bridgeControl.getDiscoveryGroupName()); Assert.assertEquals(bridgeConfig.getQueueName(), bridgeControl.getQueueName()); Assert.assertEquals(bridgeConfig.getForwardingAddress(), bridgeControl.getForwardingAddress()); Assert.assertEquals(bridgeConfig.getFilterString(), bridgeControl.getFilterString()); Assert.assertEquals(bridgeConfig.getRetryInterval(), bridgeControl.getRetryInterval()); Assert.assertEquals(bridgeConfig.getRetryIntervalMultiplier(), bridgeControl.getRetryIntervalMultiplier(), 0.000001); Assert.assertEquals(bridgeConfig.getReconnectAttempts(), bridgeControl.getReconnectAttempts()); Assert.assertEquals(bridgeConfig.isUseDuplicateDetection(), bridgeControl.isUseDuplicateDetection()); Map<String, Object> bridgeMetrics = bridgeControl.getMetrics(); Assert.assertEquals(0L, bridgeControl.getMessagesPendingAcknowledgement()); Assert.assertEquals(0L, bridgeControl.getMessagesAcknowledged()); Assert.assertEquals(0L, bridgeMetrics.get(BridgeMetrics.MESSAGES_PENDING_ACKNOWLEDGEMENT_KEY)); Assert.assertEquals(0L, bridgeMetrics.get(BridgeMetrics.MESSAGES_ACKNOWLEDGED_KEY)); String[] connectorPairData = bridgeControl.getStaticConnectors(); Assert.assertEquals(bridgeConfig.getStaticConnectors().get(0), connectorPairData[0]); Assert.assertTrue(bridgeControl.isStarted()); }
@Override public String getName() { clearIO(); try { return configuration.getName(); } finally { blockOnIO(); } }
private static void compareTTLWithCheckPeriod(Configuration configuration) { for (ClusterConnectionConfiguration c : configuration.getClusterConfigurations()) compareTTLWithCheckPeriod(c.getName(), c.getConnectionTTL(), configuration.getConnectionTTLOverride(), c.getClientFailureCheckPeriod()); for (BridgeConfiguration c : configuration.getBridgeConfigurations()) compareTTLWithCheckPeriod(c.getName(), c.getConnectionTTL(), configuration.getConnectionTTLOverride(), c.getClientFailureCheckPeriod()); }
@Override public String[] getStaticConnectors() throws Exception { clearIO(); try { List<String> staticConnectors = configuration.getStaticConnectors(); return staticConnectors.toArray(new String[staticConnectors.size()]); } finally { blockOnIO(); } }
@Override public String getFilterString() { clearIO(); try { return configuration.getFilterString(); } finally { blockOnIO(); } }
@Override public int getReconnectAttempts() { clearIO(); try { return configuration.getReconnectAttempts(); } finally { blockOnIO(); } }
@Override public double getRetryIntervalMultiplier() { clearIO(); try { return configuration.getRetryIntervalMultiplier(); } finally { blockOnIO(); } }
@Override public String getQueueName() { clearIO(); try { return configuration.getQueueName(); } finally { blockOnIO(); } }
@Override public boolean isUseDuplicateDetection() { clearIO(); try { return configuration.isUseDuplicateDetection(); } finally { blockOnIO(); } }
@Override public String getForwardingAddress() { clearIO(); try { return configuration.getForwardingAddress(); } finally { blockOnIO(); } }
@Override public String getDiscoveryGroupName() { clearIO(); try { return configuration.getDiscoveryGroupName(); } finally { blockOnIO(); } }
@Override public long getRetryInterval() { clearIO(); try { return configuration.getRetryInterval(); } finally { blockOnIO(); } }
static void createBridge(String name, BridgeConfiguration bridgeConfig, ActiveMQServerControl serverControl) { try { String transformerClassName = bridgeConfig.getTransformerConfiguration() != null ? bridgeConfig.getTransformerConfiguration().getClassName() : null; if (bridgeConfig.getDiscoveryGroupName() != null) { serverControl.createBridge(name, bridgeConfig.getQueueName(), bridgeConfig.getForwardingAddress(), bridgeConfig.getFilterString(), transformerClassName, bridgeConfig.getRetryInterval(), bridgeConfig.getRetryIntervalMultiplier(), bridgeConfig.getInitialConnectAttempts(), bridgeConfig.getReconnectAttempts(), bridgeConfig.isUseDuplicateDetection(), bridgeConfig.getConfirmationWindowSize(), bridgeConfig.getClientFailureCheckPeriod(), bridgeConfig.getDiscoveryGroupName(), true, bridgeConfig.isHA(), bridgeConfig.getUser(), bridgeConfig.getPassword()); } else { boolean first = true; String connectors = ""; for (String connector : bridgeConfig.getStaticConnectors()) { if (!first) { connectors += ","; serverControl.createBridge(name, bridgeConfig.getQueueName(), bridgeConfig.getForwardingAddress(), bridgeConfig.getFilterString(), transformerClassName, bridgeConfig.getRetryInterval(), bridgeConfig.getRetryIntervalMultiplier(), bridgeConfig.getInitialConnectAttempts(), bridgeConfig.getReconnectAttempts(), bridgeConfig.isUseDuplicateDetection(), bridgeConfig.getConfirmationWindowSize(), bridgeConfig.getClientFailureCheckPeriod(), connectors, false, bridgeConfig.isHA(), bridgeConfig.getUser(), bridgeConfig.getPassword());
@Test public void testAttributes() throws Exception { checkResource(ObjectNameBuilder.DEFAULT.getBridgeObjectName(bridgeConfig.getName())); CoreMessagingProxy proxy = createProxy(bridgeConfig.getName()); Assert.assertEquals(bridgeConfig.getName(), proxy.retrieveAttributeValue("name")); Assert.assertEquals(bridgeConfig.getDiscoveryGroupName(), proxy.retrieveAttributeValue("discoveryGroupName")); Assert.assertEquals(bridgeConfig.getQueueName(), proxy.retrieveAttributeValue("queueName")); Assert.assertEquals(bridgeConfig.getForwardingAddress(), proxy.retrieveAttributeValue("forwardingAddress")); Assert.assertEquals(bridgeConfig.getFilterString(), proxy.retrieveAttributeValue("filterString")); Assert.assertEquals(bridgeConfig.getRetryInterval(), proxy.retrieveAttributeValue("retryInterval", Long.class)); Assert.assertEquals(bridgeConfig.getRetryIntervalMultiplier(), proxy.retrieveAttributeValue("retryIntervalMultiplier", Double.class)); Assert.assertEquals(bridgeConfig.getReconnectAttempts(), proxy.retrieveAttributeValue("reconnectAttempts", Integer.class)); Assert.assertEquals(bridgeConfig.isUseDuplicateDetection(), proxy.retrieveAttributeValue("useDuplicateDetection", Boolean.class)); @SuppressWarnings("unchecked") Map<String, Object> bridgeMetrics = (Map<String, Object>) proxy.retrieveAttributeValue("metrics", Map.class); Assert.assertEquals(0L, proxy.retrieveAttributeValue("messagesPendingAcknowledgement", Long.class)); Assert.assertEquals(0L, proxy.retrieveAttributeValue("messagesAcknowledged", Long.class)); Assert.assertEquals(0L, bridgeMetrics.get(BridgeMetrics.MESSAGES_PENDING_ACKNOWLEDGEMENT_KEY)); Assert.assertEquals(0L, bridgeMetrics.get(BridgeMetrics.MESSAGES_ACKNOWLEDGED_KEY)); Object[] data = (Object[]) proxy.retrieveAttributeValue("staticConnectors"); Assert.assertEquals(bridgeConfig.getStaticConnectors().get(0), data[0]); Assert.assertTrue((Boolean) proxy.retrieveAttributeValue("started")); }
@Override public synchronized void registerBridge(final Bridge bridge, final BridgeConfiguration configuration) throws Exception { bridge.setNotificationService(this); ObjectName objectName = objectNameBuilder.getBridgeObjectName(configuration.getName()); BridgeControl control = new BridgeControlImpl(bridge, storageManager, configuration); registerInJMX(objectName, control); registerInRegistry(ResourceNames.BRIDGE + configuration.getName(), control); }
if (configuration != null) { for (BridgeConfiguration bridgeConfiguration : configuration.getBridgeConfigurations()) { bridgeCredentialSource.put(bridgeConfiguration.getName(), new InjectedValue<>());
if (configuration != null) { for (BridgeConfiguration bridgeConfiguration : configuration.getBridgeConfigurations()) { bridgeCredentialSource.put(bridgeConfiguration.getName(), new InjectedValue<>());