private void configureLocations(String dataDirectory) { if (dataDirectory == null || !new File(dataDirectory).exists()) { throw new AsyncException("Must provide data directory that exists"); } config.setBindingsDirectory(dataDirectory + "/bindings"); config.setJournalDirectory(dataDirectory + "/journal"); config.setLargeMessagesDirectory(dataDirectory + "/largemessages"); config.setPagingDirectory(dataDirectory + "/paging"); }
private void configureLocations(String dataDirectory) { if (dataDirectory == null || !new File(dataDirectory).exists()) { throw new AsyncException("Must provide data directory that exists"); } config.setBindingsDirectory(dataDirectory + "/bindings"); config.setJournalDirectory(dataDirectory + "/journal"); config.setLargeMessagesDirectory(dataDirectory + "/largemessages"); config.setPagingDirectory(dataDirectory + "/paging"); }
@Given("^Start Event Broker$") public void start() { if (NO_EMBEDDED_SERVERS) { return; } System.setProperty(SystemSettingKey.EVENT_BUS_URL.key(), "amqp://127.0.0.1:5672"); database.setup(); logger.info("Starting new instance of Event Broker"); try { //start Artemis embedded Configuration configuration = new ConfigurationImpl(); configuration.setPersistenceEnabled(false); configuration.setJournalDirectory(DEFAULT_DATA_DIRECTORY); configuration.setSecurityEnabled(false); configuration.addAcceptorConfiguration("amqp", "tcp://127.0.0.1:5672?protocols=AMQP"); configuration.addConnectorConfiguration("connector", "tcp://127.0.0.1:5672"); JMSConfiguration jmsConfig = new JMSConfigurationImpl(); ConnectionFactoryConfiguration cfConfig = new ConnectionFactoryConfigurationImpl().setName("cf").setConnectorNames(Arrays.asList("connector")).setBindings("cf"); jmsConfig.getConnectionFactoryConfigurations().add(cfConfig); jmsServer = new EmbeddedJMS().setConfiguration(configuration).setJmsConfiguration(jmsConfig).start(); if (EXTRA_STARTUP_DELAY > 0) { Thread.sleep(Duration.ofSeconds(EXTRA_STARTUP_DELAY).toMillis()); } } catch (RuntimeException e) { throw e; } catch (Exception e) { logger.error("Failed to start Event Broker", e); } }
/** * update the backups configuration * * @param backupConfiguration the configuration to update * @param name the new name of the backup * @param portOffset the offset for the acceptors and any connectors that need changing * @param remoteConnectors the connectors that don't need off setting, typically remote * @param journalDirectory * @param bindingsDirectory * @param largeMessagesDirectory * @param pagingDirectory * @param fullServer */ private static void updateSharedStoreConfiguration(Configuration backupConfiguration, String name, int portOffset, List<String> remoteConnectors, String journalDirectory, String bindingsDirectory, String largeMessagesDirectory, String pagingDirectory, boolean fullServer) { backupConfiguration.setName(name); backupConfiguration.setJournalDirectory(journalDirectory); backupConfiguration.setBindingsDirectory(bindingsDirectory); backupConfiguration.setLargeMessagesDirectory(largeMessagesDirectory); backupConfiguration.setPagingDirectory(pagingDirectory); updateAcceptorsAndConnectors(backupConfiguration, portOffset, remoteConnectors, fullServer); }
@Test public void testDataOutsideHome() throws Exception { Configuration configuration = createDefaultConfig(false); File instanceHome = new File(getTemporaryDir(), "artemisHome"); configuration.setBrokerInstance(instanceHome); // the journal should be outside of the artemisInstance on this case File journalOutside = new File(getTemporaryDir(), "./journalOut").getAbsoluteFile(); configuration.setJournalDirectory(journalOutside.getAbsolutePath()); // Somewhere inside artemis.instance configuration.setBindingsDirectory("./bind"); File bindingsInside = new File(instanceHome, "bind"); // configuration.setJournal System.out.println("Journal dir::" + configuration.getJournalDirectory()); System.out.println("Journal loc::" + configuration.getJournalLocation()); ActiveMQServer server = createServer(true, configuration, AddressSettings.DEFAULT_PAGE_SIZE, AddressSettings.DEFAULT_MAX_SIZE_BYTES, new HashMap<String, AddressSettings>()); server.start(); server.stop(); checkData(journalOutside, ".amq"); // Checking if the journal created the lock as well checkData(journalOutside, "server.lock"); checkData(bindingsInside, ".bindings"); }
@Test public void testRelativePath() throws Exception { Configuration configuration = createDefaultConfig(false); File instanceHome = new File(getTemporaryDir(), "artemisHome"); File dataHome = new File(instanceHome, "data"); // One folder up for testing File bindingsHome = new File(instanceHome, "../binx"); System.out.println("InstanceHome->" + instanceHome); instanceHome.mkdirs(); configuration.setBrokerInstance(instanceHome); configuration.setJournalDirectory("./data"); configuration.setPagingDirectory("./paging"); configuration.setBindingsDirectory("../binx"); // one folder up from instance home configuration.setLargeMessagesDirectory("./large"); ActiveMQServer server = createServer(true, configuration, AddressSettings.DEFAULT_PAGE_SIZE, AddressSettings.DEFAULT_MAX_SIZE_BYTES, new HashMap<String, AddressSettings>()); server.start(); server.stop(); checkData(dataHome, ".amq"); checkData(bindingsHome, ".bindings"); }
public static ActiveMQServer startServer() throws Exception { if (server == null) { Configuration config = new ConfigurationImpl().addAcceptorConfiguration("netty", "tcp://localhost:61616").setSecurityEnabled(false).addConnectorConfiguration("netty", "tcp://localhost:61616"); File dataPlace = new File("./target/dataJoram"); FileUtil.deleteDirectory(dataPlace); config.setJournalDirectory(new File(dataPlace, "./journal").getAbsolutePath()). setPagingDirectory(new File(dataPlace, "./paging").getAbsolutePath()). setLargeMessagesDirectory(new File(dataPlace, "./largemessages").getAbsolutePath()). setBindingsDirectory(new File(dataPlace, "./bindings").getAbsolutePath()).setPersistenceEnabled(true); // disable server persistence since JORAM tests do not restart server server = ActiveMQServers.newActiveMQServer(config, useFiles); // set DLA and expiry to avoid spamming the log with warnings server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setDeadLetterAddress(SimpleString.toSimpleString("DLA")).setExpiryAddress(SimpleString.toSimpleString("Expiry"))); server.start(); } return server; }
/** * update the backups configuration * * @param backupConfiguration the configuration to update * @param name the new name of the backup * @param portOffset the offset for the acceptors and any connectors that need changing * @param remoteConnectors the connectors that don't need off setting, typically remote */ private static void updateReplicatedConfiguration(Configuration backupConfiguration, String name, int portOffset, List<String> remoteConnectors, boolean fullServer) { backupConfiguration.setName(name); backupConfiguration.setJournalDirectory(backupConfiguration.getJournalDirectory() + name); backupConfiguration.setPagingDirectory(backupConfiguration.getPagingDirectory() + name); backupConfiguration.setLargeMessagesDirectory(backupConfiguration.getLargeMessagesDirectory() + name); backupConfiguration.setBindingsDirectory(backupConfiguration.getBindingsDirectory() + name); updateAcceptorsAndConnectors(backupConfiguration, portOffset, remoteConnectors, fullServer); }
@Test public void testExtraBackupReplicates() throws Exception { Configuration secondBackupConfig = backupConfig.copy(); TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); TestableServer secondBackupServer = createTestableServer(secondBackupConfig); tc.getParams().put("serverId", "2"); secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); waitForRemoteBackupSynchronization(backupServer.getServer()); secondBackupServer.start(); Thread.sleep(5000); backupServer.stop(); waitForSync(secondBackupServer.getServer()); waitForRemoteBackupSynchronization(secondBackupServer.getServer()); }
@Test public void testExtraBackupGroupNameReplicates() throws Exception { ReplicaPolicyConfiguration backupReplicaPolicyConfiguration = (ReplicaPolicyConfiguration) backupServer.getServer().getConfiguration().getHAPolicyConfiguration(); backupReplicaPolicyConfiguration.setGroupName("foo"); ReplicatedPolicyConfiguration replicatedPolicyConfiguration = (ReplicatedPolicyConfiguration) liveServer.getServer().getConfiguration().getHAPolicyConfiguration(); replicatedPolicyConfiguration.setGroupName("foo"); Configuration secondBackupConfig = backupConfig.copy(); TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); TestableServer secondBackupServer = createTestableServer(secondBackupConfig); tc.getParams().put("serverId", "2"); secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); ReplicaPolicyConfiguration replicaPolicyConfiguration = (ReplicaPolicyConfiguration) secondBackupConfig.getHAPolicyConfiguration(); replicaPolicyConfiguration.setGroupName("foo"); waitForRemoteBackupSynchronization(backupServer.getServer()); secondBackupServer.start(); Thread.sleep(5000); backupServer.stop(); waitForSync(secondBackupServer.getServer()); waitForRemoteBackupSynchronization(secondBackupServer.getServer()); }
Configuration createConfig(String folder) throws Exception { Configuration configuration = createDefaultConfig(true); configuration.setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(100 * 1024).setJournalType(getDefaultJournalType()).setJournalDirectory(folder + "/journal").setBindingsDirectory(folder + "/bindings").setPagingDirectory(folder + "/paging"). setLargeMessagesDirectory(folder + "/largemessage").setJournalCompactMinFiles(0).setJournalCompactPercentage(0).setClusterPassword(CLUSTER_PASSWORD).setJournalDatasync(false); configuration.setSecurityEnabled(false); configuration.setPersistenceEnabled(true); return configuration; }
Configuration createConfig(String folder) throws Exception { Configuration configuration = createDefaultConfig(true); configuration.setSecurityEnabled(false).setJournalMinFiles(2).setJournalFileSize(100 * 1024).setJournalType(getDefaultJournalType()).setJournalDirectory(folder + "/journal").setBindingsDirectory(folder + "/bindings").setPagingDirectory(folder + "/paging"). setLargeMessagesDirectory(folder + "/largemessage").setJournalCompactMinFiles(0).setJournalCompactPercentage(0).setClusterPassword(CLUSTER_PASSWORD).setJournalDatasync(false); configuration.setSecurityEnabled(false); configuration.setPersistenceEnabled(true); return configuration; }
public Configuration getParameterConfiguration() throws Exception { Configuration configuration = readConfiguration(); if (isJDBC()) { DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setJdbcConnectionUrl(getJdbcURL()); storageConfiguration.setJdbcDriverClassName(getJdbcClassName()); storageConfiguration.setBindingsTableName(getJdbcBindings()); storageConfiguration.setMessageTableName(getJdbcMessages()); storageConfiguration.setLargeMessageTableName(getJdbcLargeMessages()); storageConfiguration.setPageStoreTableName(getJdbcPageStore()); storageConfiguration.setNodeManagerStoreTableName(getJdbcNodeManager()); configuration.setStoreConfiguration(storageConfiguration); } else { configuration.setBindingsDirectory(getBinding()); configuration.setJournalDirectory(getJournal()); configuration.setPagingDirectory(getPaging()); configuration.setLargeMessagesDirectory(getLargeMessages()); configuration.setJournalType(JournalType.NIO); } return configuration; }
public Configuration getParameterConfiguration() throws Exception { Configuration configuration = readConfiguration(); if (isJDBC()) { DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setJdbcConnectionUrl(getJdbcURL()); storageConfiguration.setJdbcDriverClassName(getJdbcClassName()); storageConfiguration.setBindingsTableName(getJdbcBindings()); storageConfiguration.setMessageTableName(getJdbcMessages()); storageConfiguration.setLargeMessageTableName(getJdbcLargeMessages()); storageConfiguration.setPageStoreTableName(getJdbcPageStore()); storageConfiguration.setNodeManagerStoreTableName(getJdbcNodeManager()); configuration.setStoreConfiguration(storageConfiguration); } else { configuration.setBindingsDirectory(getBinding()); configuration.setJournalDirectory(getJournal()); configuration.setPagingDirectory(getPaging()); configuration.setLargeMessagesDirectory(getLargeMessages()); configuration.setJournalType(JournalType.NIO); } return configuration; }
protected void createLiveConfig(int liveNode) throws Exception { TransportConfiguration liveConnector = createTransportConfiguration(isNetty(), false, generateParams(liveNode, isNetty())); Configuration config0 = super.createDefaultInVMConfig().clearAcceptorConfigurations().addAcceptorConfiguration(createTransportConfiguration(isNetty(), true, generateParams(liveNode, isNetty()))).setHAPolicyConfiguration(sharedStore ? new SharedStoreMasterPolicyConfiguration() : new ReplicatedPolicyConfiguration()).addClusterConfiguration(basicClusterConnectionConfig(liveConnector.getName())).addConnectorConfiguration(liveConnector.getName(), liveConnector).setBindingsDirectory(getBindingsDir() + "_" + liveNode).setJournalDirectory(getJournalDir() + "_" + liveNode).setPagingDirectory(getPageDir() + "_" + liveNode).setLargeMessagesDirectory(getLargeMessagesDir() + "_" + liveNode); SameProcessActiveMQServer server = new SameProcessActiveMQServer(createInVMFailoverServer(true, config0, nodeManager, liveNode)); addActiveMQComponent(server); servers.put(liveNode, server); }
protected ActiveMQServer createServer(int port) throws Exception { final ActiveMQServer server = this.createServer(true, true); server.getConfiguration().getAcceptorConfigurations().clear(); server.getConfiguration().getAcceptorConfigurations().add(addAcceptorConfiguration(server, port)); server.getConfiguration().setName(BROKER_NAME); server.getConfiguration().setJournalDirectory(server.getConfiguration().getJournalDirectory() + port); server.getConfiguration().setBindingsDirectory(server.getConfiguration().getBindingsDirectory() + port); server.getConfiguration().setPagingDirectory(server.getConfiguration().getPagingDirectory() + port); server.getConfiguration().setJMXManagementEnabled(true); server.getConfiguration().setMessageExpiryScanPeriod(5000); server.setMBeanServer(mBeanServer); // Add any additional Acceptors needed for tests addAdditionalAcceptors(server); // Address configuration configureAddressPolicy(server); // Add optional security for tests that need it configureBrokerSecurity(server); // Add extra configuration addConfiguration(server); server.start(); // Prepare all addresses and queues for client tests. createAddressAndQueues(server); return server; }
protected void createLiveConfig(NodeManager nodeManager, int liveNode, int... otherLiveNodes) throws Exception { TransportConfiguration liveConnector = createTransportConfiguration(isNetty(), false, generateParams(liveNode, isNetty())); Configuration config0 = super.createDefaultInVMConfig().clearAcceptorConfigurations().addAcceptorConfiguration(createTransportConfiguration(isNetty(), true, generateParams(liveNode, isNetty()))).setHAPolicyConfiguration(sharedStore ? new SharedStoreMasterPolicyConfiguration() : new ReplicatedPolicyConfiguration()).setBindingsDirectory(getBindingsDir() + "_" + liveNode).setJournalDirectory(getJournalDir() + "_" + liveNode).setPagingDirectory(getPageDir() + "_" + liveNode).setLargeMessagesDirectory(getLargeMessagesDir() + "_" + liveNode).addConnectorConfiguration(liveConnector.getName(), liveConnector); String[] pairs = new String[otherLiveNodes.length]; for (int i = 0; i < otherLiveNodes.length; i++) { TransportConfiguration otherLiveConnector = createTransportConfiguration(isNetty(), false, generateParams(otherLiveNodes[i], isNetty())); config0.addConnectorConfiguration(otherLiveConnector.getName(), otherLiveConnector); pairs[i] = otherLiveConnector.getName(); } config0.addClusterConfiguration(basicClusterConnectionConfig(liveConnector.getName(), pairs)); servers.put(liveNode, new SameProcessActiveMQServer(createInVMFailoverServer(true, config0, nodeManager, liveNode))); }
protected void createBackupConfig(int liveNode, int nodeid, int... nodes) throws Exception { TransportConfiguration backupConnector = createTransportConfiguration(isNetty(), false, generateParams(nodeid, isNetty())); Configuration config1 = super.createDefaultInVMConfig().clearAcceptorConfigurations().addAcceptorConfiguration(createTransportConfiguration(isNetty(), true, generateParams(nodeid, isNetty()))).setHAPolicyConfiguration(sharedStore ? new SharedStoreSlavePolicyConfiguration() : new ReplicatedPolicyConfiguration()).addConnectorConfiguration(backupConnector.getName(), backupConnector).setBindingsDirectory(getBindingsDir() + "_" + liveNode).setJournalDirectory(getJournalDir() + "_" + liveNode).setPagingDirectory(getPageDir() + "_" + liveNode).setLargeMessagesDirectory(getLargeMessagesDir() + "_" + liveNode); String[] staticConnectors = new String[nodes.length]; for (int i = 0; i < nodes.length; i++) { TransportConfiguration liveConnector = createTransportConfiguration(isNetty(), false, generateParams(nodes[i], isNetty())); config1.addConnectorConfiguration(liveConnector.getName(), liveConnector); staticConnectors[i] = liveConnector.getName(); } config1.addClusterConfiguration(basicClusterConnectionConfig(backupConnector.getName(), staticConnectors)); servers.put(nodeid, new SameProcessActiveMQServer(createInVMFailoverServer(true, config1, nodeManager, nodeid))); }
protected void createReplicatedConfigs() throws Exception { final TransportConfiguration liveConnector = getConnectorTransportConfiguration(true); final TransportConfiguration backupConnector = getConnectorTransportConfiguration(false); final TransportConfiguration backupAcceptor = getAcceptorTransportConfiguration(false); backupConfig = createDefaultInVMConfig(); liveConfig = createDefaultInVMConfig(); ReplicatedBackupUtils.configureReplicationPair(backupConfig, backupConnector, backupAcceptor, liveConfig, liveConnector, null); backupConfig.setBindingsDirectory(getBindingsDir(0, true)).setJournalDirectory(getJournalDir(0, true)).setPagingDirectory(getPageDir(0, true)).setLargeMessagesDirectory(getLargeMessagesDir(0, true)).setSecurityEnabled(false); setupHAPolicyConfiguration(); nodeManager = createReplicatedBackupNodeManager(backupConfig); backupServer = createTestableServer(backupConfig); liveConfig.clearAcceptorConfigurations().addAcceptorConfiguration(getAcceptorTransportConfiguration(true)); liveServer = createTestableServer(liveConfig); }
protected void createBackupConfig(NodeManager nodeManager, int liveNode, int nodeid, boolean createClusterConnections, int[] otherBackupNodes, int... otherClusterNodes) throws Exception { Configuration config1 = super.createDefaultInVMConfig().clearAcceptorConfigurations().addAcceptorConfiguration(createTransportConfiguration(isNetty(), true, generateParams(nodeid, isNetty()))).setHAPolicyConfiguration(sharedStore ? new SharedStoreSlavePolicyConfiguration() : new ReplicaPolicyConfiguration()).setBindingsDirectory(getBindingsDir() + "_" + liveNode).setJournalDirectory(getJournalDir() + "_" + liveNode).setPagingDirectory(getPageDir() + "_" + liveNode).setLargeMessagesDirectory(getLargeMessagesDir() + "_" + liveNode); for (int node : otherBackupNodes) { TransportConfiguration liveConnector = createTransportConfiguration(isNetty(), false, generateParams(node, isNetty())); config1.addConnectorConfiguration(liveConnector.getName(), liveConnector); } TransportConfiguration backupConnector = createTransportConfiguration(isNetty(), false, generateParams(nodeid, isNetty())); config1.addConnectorConfiguration(backupConnector.getName(), backupConnector); String[] clusterNodes = new String[otherClusterNodes.length]; for (int i = 0; i < otherClusterNodes.length; i++) { TransportConfiguration connector = createTransportConfiguration(isNetty(), false, generateParams(otherClusterNodes[i], isNetty())); config1.addConnectorConfiguration(connector.getName(), connector); clusterNodes[i] = connector.getName(); } config1.addClusterConfiguration(basicClusterConnectionConfig(backupConnector.getName(), clusterNodes)); servers.put(nodeid, new SameProcessActiveMQServer(createInVMFailoverServer(true, config1, nodeManager, liveNode))); }