@Override protected URI internalNewURI(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); }
public static DiscoveryGroupConfiguration getDiscoveryGroupConfiguration(URI uri, Map<String, String> query, String host, int port, String name) throws Exception { UDPBroadcastEndpointFactory endpointFactoryConfiguration = new UDPBroadcastEndpointFactory().setGroupAddress(host).setGroupPort(port); BeanSupport.setData(uri, endpointFactoryConfiguration, query); DiscoveryGroupConfiguration dgc = BeanSupport.setData(uri, new DiscoveryGroupConfiguration(), query).setName(name).setBroadcastEndpointFactory(endpointFactoryConfiguration); BeanSupport.setData(uri, dgc, query); return dgc; } }
private static int getIntProperty(String key, String defaultValue) { String value = getProperty(key, defaultValue); try { return Integer.parseInt(value); } catch (Throwable t) { ActiveMQClientLogger.LOGGER.unableToParseValue(t); return Integer.parseInt(defaultValue); } }
protected DiscoveryGroup newDiscoveryGroup(final String nodeID, final String name, final InetAddress localBindAddress, final InetAddress groupAddress, final int groupPort, final long timeout, NotificationService notif) throws Exception { return new DiscoveryGroup(nodeID, name, timeout, new UDPBroadcastEndpointFactory().setGroupAddress(groupAddress.getHostAddress()).setGroupPort(groupPort).setLocalBindAddress(localBindAddress != null ? localBindAddress.getHostAddress() : "localhost"), notif); }
private DiscoveryGroupConfiguration translateDiscoveryGroupConfiguration(org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration newDiscoveryGroupConfiguration) throws StartException { org.apache.activemq.artemis.api.core.BroadcastEndpointFactory newBroadcastEndpointFactory = newDiscoveryGroupConfiguration.getBroadcastEndpointFactory(); BroadcastEndpointFactoryConfiguration legacyBroadcastEndpointFactory; if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new UDPBroadcastGroupConfiguration( factory.getGroupAddress(), factory.getGroupPort(), factory.getLocalBindAddress(), factory.getLocalBindPort()); } else if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new org.hornetq.api.core.JGroupsBroadcastGroupConfiguration( factory.getChannel(), factory.getChannelName()); } else { throw MessagingLogger.ROOT_LOGGER.unsupportedBroadcastGroupConfigurationForLegacy(newBroadcastEndpointFactory.getClass().getName()); } return new DiscoveryGroupConfiguration(newDiscoveryGroupConfiguration.getName(), newDiscoveryGroupConfiguration.getRefreshTimeout(), newDiscoveryGroupConfiguration.getDiscoveryInitialWaitTimeout(), legacyBroadcastEndpointFactory); }
if (bgCfg instanceof UDPBroadcastEndpointFactory) { UDPBroadcastEndpointFactory udpCfg = (UDPBroadcastEndpointFactory) bgCfg; properties.add(simpleProperty15(GROUP_ADDRESS, STRING_TYPE, udpCfg.getGroupAddress())); properties.add(simpleProperty15(GROUP_PORT, INTEGER_TYPE, "" + udpCfg.getGroupPort())); properties.add(simpleProperty15(DISCOVERY_LOCAL_BIND_ADDRESS, STRING_TYPE, "" + udpCfg.getLocalBindAddress())); } else if (bgCfg instanceof CommandDispatcherBroadcastEndpointFactory) { properties.add(simpleProperty15(JGROUPS_CHANNEL_NAME, STRING_TYPE, jgroupsChannelName));
@Test public void testAttributes() throws Exception { UDPBroadcastEndpointFactory udpCfg = (UDPBroadcastEndpointFactory) broadcastGroupConfig.getEndpointFactory(); Assert.assertEquals(broadcastGroupConfig.getName(), broadcastGroupControl.getName()); Assert.assertEquals(udpCfg.getGroupAddress(), broadcastGroupControl.getGroupAddress()); Assert.assertEquals(udpCfg.getGroupPort(), broadcastGroupControl.getGroupPort()); Assert.assertEquals(udpCfg.getLocalBindPort(), broadcastGroupControl.getLocalBindPort()); Assert.assertEquals(broadcastGroupConfig.getBroadcastPeriod(), broadcastGroupControl.getBroadcastPeriod()); Object[] connectorPairs = broadcastGroupControl.getConnectorPairs(); Assert.assertEquals(1, connectorPairs.length); String connectorPairData = (String) connectorPairs[0]; Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), connectorPairData); String jsonString = broadcastGroupControl.getConnectorPairsAsJSON(); Assert.assertNotNull(jsonString); JsonArray array = JsonUtil.readJsonArray(jsonString); Assert.assertEquals(1, array.size()); Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), array.getString(0)); Assert.assertTrue(broadcastGroupControl.isStarted()); }
@Override public int getGroupPort() throws Exception { clearIO(); try { if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) { return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupPort(); } throw new Exception("Invalid request because this is not a UDP Broadcast configuration."); } finally { blockOnIO(); } }
@Override public String getGroupAddress() throws Exception { clearIO(); try { if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) { return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupAddress(); } throw new Exception("Invalid request because this is not a UDP Broadcast configuration."); } finally { blockOnIO(); } }
@Override public int getLocalBindPort() throws Exception { clearIO(); try { if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) { return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getLocalBindPort(); } throw new Exception("Invalid request because this is not a UDP Broadcast configuration."); } finally { blockOnIO(); } }
/** * This method is here just to facilitate creating the Broadcaster for this test */ protected BroadcastGroupImpl newBroadcast(final String nodeID, final String name, final InetAddress localAddress, int localPort, final InetAddress groupAddress, final int groupPort) throws Exception { return new BroadcastGroupImpl(new FakeNodeManager(nodeID), name, 0, null, new UDPBroadcastEndpointFactory().setGroupAddress(groupAddress.getHostAddress()).setGroupPort(groupPort).setLocalBindAddress(localAddress != null ? localAddress.getHostAddress() : "localhost").setLocalBindPort(localPort)); }
private DiscoveryGroupConfiguration translateDiscoveryGroupConfiguration(org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration newDiscoveryGroupConfiguration) throws StartException { org.apache.activemq.artemis.api.core.BroadcastEndpointFactory newBroadcastEndpointFactory = newDiscoveryGroupConfiguration.getBroadcastEndpointFactory(); BroadcastEndpointFactoryConfiguration legacyBroadcastEndpointFactory; if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new UDPBroadcastGroupConfiguration( factory.getGroupAddress(), factory.getGroupPort(), factory.getLocalBindAddress(), factory.getLocalBindPort()); } else if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new org.hornetq.api.core.JGroupsBroadcastGroupConfiguration( factory.getChannel(), factory.getChannelName()); } else { throw MessagingLogger.ROOT_LOGGER.unsupportedBroadcastGroupConfigurationForLegacy(newBroadcastEndpointFactory.getClass().getName()); } return new DiscoveryGroupConfiguration(newDiscoveryGroupConfiguration.getName(), newDiscoveryGroupConfiguration.getRefreshTimeout(), newDiscoveryGroupConfiguration.getDiscoveryInitialWaitTimeout(), legacyBroadcastEndpointFactory); }
if (bgCfg instanceof UDPBroadcastEndpointFactory) { UDPBroadcastEndpointFactory udpCfg = (UDPBroadcastEndpointFactory) bgCfg; properties.add(simpleProperty15(GROUP_ADDRESS, STRING_TYPE, udpCfg.getGroupAddress())); properties.add(simpleProperty15(GROUP_PORT, INTEGER_TYPE, "" + udpCfg.getGroupPort())); properties.add(simpleProperty15(DISCOVERY_LOCAL_BIND_ADDRESS, STRING_TYPE, "" + udpCfg.getLocalBindAddress())); } else if (bgCfg instanceof CommandDispatcherBroadcastEndpointFactory) { String external = "/" + name + ":discovery" + dgName;
long initWait = factory.getDiscoveryGroupConfiguration().getDiscoveryInitialWaitTimeout(); long refresh = factory.getDiscoveryGroupConfiguration().getRefreshTimeout(); int port = ((UDPBroadcastEndpointFactory) factory.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory()).getGroupPort();
public static DiscoveryGroupConfiguration createDiscoveryGroupConfiguration(final String name, final DiscoveryGroupConfiguration config, final SocketBinding socketBinding) throws Exception { final String localAddress = socketBinding.getAddress().getHostAddress(); final String groupAddress = socketBinding.getMulticastAddress().getHostAddress(); final int groupPort = socketBinding.getMulticastPort(); final long refreshTimeout = config.getRefreshTimeout(); final long initialWaitTimeout = config.getDiscoveryInitialWaitTimeout(); final BroadcastEndpointFactory endpointFactory = new UDPBroadcastEndpointFactory() .setGroupAddress(groupAddress) .setGroupPort(groupPort) .setLocalBindAddress(localAddress) .setLocalBindPort(-1); return new DiscoveryGroupConfiguration() .setName(name) .setRefreshTimeout(refreshTimeout) .setDiscoveryInitialWaitTimeout(initialWaitTimeout) .setBroadcastEndpointFactory(endpointFactory); }
public static DiscoveryGroupConfiguration getDiscoveryGroupConfiguration(URI uri, Map<String, String> query, String host, int port, String name) throws Exception { UDPBroadcastEndpointFactory endpointFactoryConfiguration = new UDPBroadcastEndpointFactory().setGroupAddress(host).setGroupPort(port); BeanSupport.setData(uri, endpointFactoryConfiguration, query); DiscoveryGroupConfiguration dgc = BeanSupport.setData(uri, new DiscoveryGroupConfiguration(), query).setName(name).setBroadcastEndpointFactory(endpointFactoryConfiguration); BeanSupport.setData(uri, dgc, query); return dgc; } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); String query = BeanSupport.getData(UDPServerLocatorSchema.IGNORED, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); } }
@Test public void testRemoteCFWithUDPWithTransportConfig() throws NamingException, JMSException { Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, ActiveMQInitialContextFactory.class.getCanonicalName()); props.put("connectionFactory.myConnectionFactory", "udp://" + getUDPDiscoveryAddress() + ":" + getUDPDiscoveryPort() + "?" + TransportConstants.LOCAL_ADDRESS_PROP_NAME + "=Server1&" + TransportConstants.LOCAL_PORT_PROP_NAME + "=1198&" + ActiveMQInitialContextFactory.REFRESH_TIMEOUT + "=5000&" + ActiveMQInitialContextFactory.DISCOVERY_INITIAL_WAIT_TIMEOUT + "=6000"); Context ctx = new InitialContext(props); ActiveMQConnectionFactory cf = (ActiveMQConnectionFactory) ctx.lookup("myConnectionFactory"); DiscoveryGroupConfiguration discoveryGroupConfiguration = cf.getDiscoveryGroupConfiguration(); Assert.assertEquals(5000, discoveryGroupConfiguration.getRefreshTimeout()); Assert.assertEquals(6000, discoveryGroupConfiguration.getDiscoveryInitialWaitTimeout()); UDPBroadcastEndpointFactory udpBroadcastEndpointFactory = (UDPBroadcastEndpointFactory) discoveryGroupConfiguration.getBroadcastEndpointFactory(); //these 2 are transient so are ignored Assert.assertNotEquals("Server1", udpBroadcastEndpointFactory.getLocalBindAddress()); Assert.assertNotEquals(1198, udpBroadcastEndpointFactory.getLocalBindPort()); Assert.assertEquals(getUDPDiscoveryAddress(), udpBroadcastEndpointFactory.getGroupAddress()); Assert.assertEquals(getUDPDiscoveryPort(), udpBroadcastEndpointFactory.getGroupPort()); }
if (bgCfg instanceof UDPBroadcastEndpointFactory) { UDPBroadcastEndpointFactory udpCfg = (UDPBroadcastEndpointFactory) bgCfg; properties.add(simpleProperty15(GROUP_ADDRESS, STRING_TYPE, udpCfg.getGroupAddress())); properties.add(simpleProperty15(GROUP_PORT, INTEGER_TYPE, "" + udpCfg.getGroupPort())); properties.add(simpleProperty15(DISCOVERY_LOCAL_BIND_ADDRESS, STRING_TYPE, "" + udpCfg.getLocalBindAddress())); } else if (bgCfg instanceof CommandDispatcherBroadcastEndpointFactory) { String external = "/" + name + ":discovery" + dgName;
private static int getIntProperty(String key, String defaultValue) { String value = getProperty(key, defaultValue); try { return Integer.parseInt(value); } catch (Throwable t) { ActiveMQClientLogger.LOGGER.unableToParseValue(t); return Integer.parseInt(defaultValue); } }