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; }
private void configureAcceptor() { config.setPersistenceEnabled(true); config.setSecurityEnabled(false); config.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName())); config.getConnectorConfigurations().put("connector", new TransportConfiguration(InVMConnectorFactory.class.getName())); }
protected void initializeJournal(Configuration configuration) throws Exception { this.config = configuration; executor = Executors.newFixedThreadPool(5, ActiveMQThreadFactory.defaultThreadFactory()); executorFactory = new OrderedExecutorFactory(executor); scheduledExecutorService = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r); } }); HierarchicalRepository<AddressSettings> addressSettingsRepository = new HierarchicalObjectRepository<>(config.getWildcardConfiguration()); addressSettingsRepository.setDefault(new AddressSettings()); if (configuration.isJDBC()) { storageManager = new JDBCJournalStorageManager(config, null, scheduledExecutorService, executorFactory, executorFactory, null); PagingStoreFactory pageStoreFactory = new PagingStoreFactoryDatabase((DatabaseStorageConfiguration) configuration.getStoreConfiguration(), storageManager, 1000L, scheduledExecutorService, executorFactory, false, null); pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository, configuration.getManagementAddress()); } else { storageManager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), executorFactory, executorFactory); PagingStoreFactory pageStoreFactory = new PagingStoreFactoryNIO(storageManager, config.getPagingLocation(), 1000L, scheduledExecutorService, executorFactory, true, null); pagingmanager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository, configuration.getManagementAddress()); } }
private void configureJournal(boolean useLibAio){ config.setJournalType(useLibAio ? JournalType.ASYNCIO : JournalType.NIO); config.setJournalBufferSize_AIO(MIN_LARGE_MESSAGE_SIZE); config.setJournalBufferSize_NIO(MIN_LARGE_MESSAGE_SIZE); }
/** * 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); }
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"); }
for (int j = 0; j < 100; j++) { int i = RandomUtil.randomInt(); conf.setScheduledThreadPoolMaxSize(i); Assert.assertEquals(i, conf.getScheduledThreadPoolMaxSize()); conf.setSecurityInvalidationInterval(l); Assert.assertEquals(l, conf.getSecurityInvalidationInterval()); conf.setSecurityEnabled(b); Assert.assertEquals(b, conf.isSecurityEnabled()); conf.setBindingsDirectory(s); Assert.assertEquals(s, conf.getBindingsDirectory()); conf.setCreateBindingsDir(b); Assert.assertEquals(b, conf.isCreateBindingsDir()); conf.setJournalDirectory(s); Assert.assertEquals(s, conf.getJournalDirectory()); conf.setCreateJournalDir(b); Assert.assertEquals(b, conf.isCreateJournalDir()); conf.setJournalType(journal); Assert.assertEquals(journal, conf.getJournalType()); conf.setJournalSyncTransactional(b); Assert.assertEquals(b, conf.isJournalSyncTransactional());
configuration.setName(serverName); configuration.setEnabledAsyncConnectionExecution(ASYNC_CONNECTION_EXECUTION_ENABLED.resolveModelAttribute(context, model).asBoolean()); configuration.setClusterPassword(CLUSTER_PASSWORD.resolveModelAttribute(context, model).asString()); configuration.setClusterUser(CLUSTER_USER.resolveModelAttribute(context, model).asString()); configuration.setConnectionTTLOverride(CONNECTION_TTL_OVERRIDE.resolveModelAttribute(context, model).asInt()); configuration.setCreateBindingsDir(CREATE_BINDINGS_DIR.resolveModelAttribute(context, model).asBoolean()); configuration.setCreateJournalDir(CREATE_JOURNAL_DIR.resolveModelAttribute(context, model).asBoolean()); configuration.setIDCacheSize(ID_CACHE_SIZE.resolveModelAttribute(context, model).asInt()); configuration.setJMXDomain(JMX_DOMAIN.resolveModelAttribute(context, model).asString()); configuration.setJMXManagementEnabled(JMX_MANAGEMENT_ENABLED.resolveModelAttribute(context, model).asBoolean()); configuration.setJournalType(journalType); configuration.setJournalBufferSize_AIO(value.asInt()); configuration.setJournalBufferSize_NIO(value.asInt()); configuration.setJournalBufferTimeout_AIO(value.asInt()); configuration.setJournalBufferTimeout_NIO(value.asInt()); configuration.setJournalMaxIO_AIO(value.asInt()); configuration.setJournalMaxIO_NIO(value.asInt()); configuration.setJournalCompactMinFiles(JOURNAL_COMPACT_MIN_FILES.resolveModelAttribute(context, model).asInt()); configuration.setJournalCompactPercentage(JOURNAL_COMPACT_PERCENTAGE.resolveModelAttribute(context, model).asInt()); configuration.setJournalFileSize(JOURNAL_FILE_SIZE.resolveModelAttribute(context, model).asInt());
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); }
@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()); }
config.addAcceptorConfiguration( "tcp", String.format( "tcp://%s:%d?protocols=AMQP", amqpConfig.getHost(), amqpConfig.getPort() ) ); config.setSecurityEnabled( amqpConfig.getEmbedded().isSecurity() ); config.setPersistenceEnabled( amqpConfig.getEmbedded().isPersistence() ); config.setJournalDirectory( dataDir + "/artemis/journal" ); config.setJournalType( JournalType.NIO ); config.setLargeMessagesDirectory( dataDir + "/artemis/largemessages" ); config.setBindingsDirectory( dataDir + "/artemis/bindings" ); config.setPagingDirectory( dataDir + "/artemis/paging" ); config.addAddressesSetting( "#", new AddressSettings() .setDeadLetterAddress( SimpleString.toSimpleString( "DLQ" ) ) .setExpiryAddress( SimpleString.toSimpleString( "ExpiryQueue" ) ) ); config.addAddressConfiguration( new CoreAddressConfiguration() .setName( "DLQ" ) .setRoutingType( RoutingType.ANYCAST ) ) ); config.addAddressConfiguration( new CoreAddressConfiguration() .setName( "ExpiryQueue" )
if (configuration.getJournalType() == JournalType.ASYNCIO) { if (!AIOSequentialFileFactory.isSupported()) { ActiveMQServerLogger.LOGGER.switchingNIO(); configuration.setJournalType(JournalType.NIO); } else if (!AIOSequentialFileFactory.isSupported(configuration.getJournalLocation())) { ActiveMQServerLogger.LOGGER.switchingNIOonPath(configuration.getJournalLocation().getAbsolutePath()); configuration.setJournalType(JournalType.NIO); if (configuration.getMemoryMeasureInterval() != -1) { memoryManager = new MemoryManager(configuration.getMemoryWarningThreshold(), configuration.getMemoryMeasureInterval()); if (configuration.getClusterConfigurations().size() > 0 && ActiveMQDefaultConfiguration.getDefaultClusterUser().equals(configuration.getClusterUser()) && ActiveMQDefaultConfiguration.getDefaultClusterPassword().equals(configuration.getClusterPassword())) { ActiveMQServerLogger.LOGGER.clusterSecurityRisk(); securityStore = new SecurityStoreImpl(securityRepository, securityManager, configuration.getSecurityInvalidationInterval(), configuration.isSecurityEnabled(), configuration.getClusterUser(), configuration.getClusterPassword(), managementService); resourceManager = new ResourceManagerImpl((int) (configuration.getTransactionTimeout() / 1000), configuration.getTransactionTimeoutScanPeriod(), scheduledPool); postOffice = new PostOfficeImpl(this, storageManager, pagingManager, queueFactory, managementService, configuration.getMessageExpiryScanPeriod(), configuration.getAddressQueueScanPeriod(), configuration.getWildcardConfiguration(), configuration.getIDCacheSize(), configuration.isPersistIDCache(), addressSettingsRepository); if (!configuration.isPersistenceEnabled()) { for (AddressSettings addressSettings : addressSettingsRepository.values()) { if (addressSettings.getAddressFullMessagePolicy() == AddressFullMessagePolicy.PAGE) { deployGroupingHandlerConfiguration(configuration.getGroupingHandlerConfiguration()); this.reloadManager = new ReloadManagerImpl(getScheduledPool(), executorFactory.getExecutor(), configuration.getConfigurationFileRefreshPeriod()); if (configuration.getConfigurationUrl() != null && getScheduledPool() != null) { reloadManager.addCallback(configuration.getConfigurationUrl(), new ConfigurationFileReloader());
@PostConstruct public void start() throws Exception { String port = Systems.getEnvVarOrSystemProperty("AMQ_PORT", "AMQ_PORT", "61616"); HashMap<String, Object> configMap = new HashMap<>(); configMap.put("host", "0.0.0.0"); configMap.put("port", port); TransportConfiguration transportConfiguration = new TransportConfiguration(NettyAcceptorFactory.class.getName(), configMap, "artemis"); Configuration configuration = new ConfigurationImpl().setJournalDirectory(DATA_ROOT + "journal-directory"); if (isPersistent()) { configuration.setBindingsDirectory(DATA_ROOT + "bindings"); configuration.setLargeMessagesDirectory(DATA_ROOT + "largemessages"); configuration.setPagingDirectory(DATA_ROOT + "paging"); configuration.setCreateJournalDir(true); configuration.setCreateBindingsDir(true); waitForVolume(); }else{ configuration.setPersistenceEnabled(false); } configuration.setSecurityEnabled(false); configuration.addAcceptorConfiguration(transportConfiguration); JMSConfiguration jmsConfig = new JMSConfigurationImpl(); broker = new EmbeddedJMS(); broker.setConfiguration(configuration); broker.setJmsConfiguration(jmsConfig); broker.start(); LOG.info("Artemis Message Broker initialized and running ..."); }
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 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 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); }
@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); } }
private void configureBeforeStart(Configuration... serverConfigs) { for (Configuration config : serverConfigs) { config.setPersistenceEnabled(true); config.setMessageCounterEnabled(true); config.setJournalFileSize(20971520); config.setJournalMinFiles(20); config.setJournalCompactPercentage(50); Map<String, AddressSettings> addressSettingsMap0 = config.getAddressesSettings(); AddressSettings addrSettings = addressSettingsMap0.get("#"); if (addrSettings == null) { addrSettings = new AddressSettings(); addressSettingsMap0.put("#", addrSettings); } addrSettings.setDeadLetterAddress(new SimpleString("jms.queue.DLQ")); addrSettings.setExpiryAddress(new SimpleString("jms.queue.ExpiryQueue")); addrSettings.setRedeliveryDelay(30); addrSettings.setMaxDeliveryAttempts(5); addrSettings.setMaxSizeBytes(1048576); addrSettings.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE); addrSettings.setPageSizeBytes(524288); addrSettings.setMessageCounterHistoryDayLimit(10); addrSettings.setRedistributionDelay(1000); } }
/** * @return */ protected Configuration createConfigServer(final int source, final int destination) throws Exception { final String destinationLabel = "toServer" + destination; final String sourceLabel = "server" + source; Configuration configuration = createDefaultInVMConfig(source).setSecurityEnabled(false) .setJMXManagementEnabled(true) .setPersistenceEnabled(false) .addConnectorConfiguration(destinationLabel, new TransportConfiguration(InVMConnectorFactory.class.getName(), generateInVMParams(destination))) .addConnectorConfiguration(sourceLabel, new TransportConfiguration(InVMConnectorFactory.class.getName(), generateInVMParams(source))) .addClusterConfiguration(new ClusterConnectionConfiguration().setName(destinationLabel) .setConnectorName(sourceLabel) .setRetryInterval(250) .setMaxHops(MAX_HOPS) .setConfirmationWindowSize(1024) .setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND) .setStaticConnectors(new ArrayList<String>() { { add(destinationLabel); } })); configuration.getAddressesSettings().put("#", new AddressSettings().setRedistributionDelay(0)); return configuration; }
@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"); }