/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.artemis.core.config;
import java.io.File;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
import org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.core.server.SecuritySettingPlugin;
import org.apache.activemq.artemis.core.server.group.impl.GroupingHandlerConfiguration;
import org.apache.activemq.artemis.core.server.plugin.ActiveMQServerPlugin;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.core.settings.impl.ResourceLimitSettings;
/**
* A Configuration is used to configure ActiveMQ Artemis servers.
*/
public interface Configuration {
/**
* To be used on dependency management on the application server
*/
String getName();
/**
* To be used on dependency management on the application server
*/
Configuration setName(String name);
/**
* We use Bean-utils to pass in System.properties that start with {@link #setSystemPropertyPrefix(String)}.
* The default should be 'brokerconfig.' (Including the ".").
* For example if you want to set clustered through a system property you must do:
*
* -Dbrokerconfig.clustered=true
*
* The prefix is configured here.
* @param systemPropertyPrefix
* @return
*/
Configuration setSystemPropertyPrefix(String systemPropertyPrefix);
/**
* See doc at {@link #setSystemPropertyPrefix(String)}.
* @return
*/
String getSystemPropertyPrefix();
Configuration parseSystemProperties() throws Exception;
Configuration parseSystemProperties(Properties properties) throws Exception;
/**
* Returns whether this server is clustered. <br>
* {@code true} if {@link #getClusterConfigurations()} is not empty.
*/
boolean isClustered();
/**
* Returns whether delivery count is persisted before messages are delivered to the consumers. <br>
* Default value is
* {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_PERSIST_DELIVERY_COUNT_BEFORE_DELIVERY}
*/
boolean isPersistDeliveryCountBeforeDelivery();
/**
* Sets whether delivery count is persisted before messages are delivered to consumers.
*/
Configuration setPersistDeliveryCountBeforeDelivery(boolean persistDeliveryCountBeforeDelivery);
/**
* Returns whether this server is using persistence and store data. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_PERSISTENCE_ENABLED}.
*/
boolean isPersistenceEnabled();
/**
* Sets whether this server is using persistence and store data.
*/
Configuration setPersistenceEnabled(boolean enable);
/**
* Should use fdatasync on journal files.
*
* @see <a href="http://man7.org/linux/man-pages/man2/fdatasync.2.html">fdatasync</a>
*
* @return a boolean
*/
boolean isJournalDatasync();
/**
* documented at {@link #isJournalDatasync()} ()}
*
* @param enable
* @return this
*/
Configuration setJournalDatasync(boolean enable);
/**
* @return usernames mapped to ResourceLimitSettings
*/
Map<String, ResourceLimitSettings> getResourceLimitSettings();
/**
* @param resourceLimitSettings usernames mapped to ResourceLimitSettings
*/
Configuration setResourceLimitSettings(Map<String, ResourceLimitSettings> resourceLimitSettings);
/**
* @param resourceLimitSettings usernames mapped to ResourceLimitSettings
*/
Configuration addResourceLimitSettings(ResourceLimitSettings resourceLimitSettings);
/**
* Returns the period (in milliseconds) to scan configuration files used by deployment. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_FILE_DEPLOYER_SCAN_PERIOD}.
*/
long getFileDeployerScanPeriod();
/**
* Sets the period to scan configuration files used by deployment.
*/
Configuration setFileDeployerScanPeriod(long period);
/**
* Returns the maximum number of threads in the thread pool of this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_THREAD_POOL_MAX_SIZE}.
*/
int getThreadPoolMaxSize();
/**
* Sets the maximum number of threads in the thread pool of this server.
*/
Configuration setThreadPoolMaxSize(int maxSize);
/**
* Returns the maximum number of threads in the <em>scheduled</em> thread pool of this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_SCHEDULED_THREAD_POOL_MAX_SIZE}.
*/
int getScheduledThreadPoolMaxSize();
/**
* Sets the maximum number of threads in the <em>scheduled</em> thread pool of this server.
*/
Configuration setScheduledThreadPoolMaxSize(int maxSize);
/**
* Returns the interval time (in milliseconds) to invalidate security credentials. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_SECURITY_INVALIDATION_INTERVAL}.
*/
long getSecurityInvalidationInterval();
/**
* Sets the interval time (in milliseconds) to invalidate security credentials.
*/
Configuration setSecurityInvalidationInterval(long interval);
/**
* Returns whether security is enabled for this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_SECURITY_ENABLED}.
*/
boolean isSecurityEnabled();
/**
* Sets whether security is enabled for this server.
*/
Configuration setSecurityEnabled(boolean enabled);
/**
* Returns whether graceful shutdown is enabled for this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_SECURITY_ENABLED}.
*/
boolean isGracefulShutdownEnabled();
/**
* Sets whether security is enabled for this server.
*/
Configuration setGracefulShutdownEnabled(boolean enabled);
/**
* Returns the graceful shutdown timeout for this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_GRACEFUL_SHUTDOWN_TIMEOUT}.
*/
long getGracefulShutdownTimeout();
/**
* Sets the graceful shutdown timeout
*/
Configuration setGracefulShutdownTimeout(long timeout);
/**
* Returns whether this server is manageable using JMX or not. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JMX_MANAGEMENT_ENABLED}.
*/
boolean isJMXManagementEnabled();
/**
* Sets whether this server is manageable using JMX or not. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JMX_MANAGEMENT_ENABLED}.
*/
Configuration setJMXManagementEnabled(boolean enabled);
/**
* Returns the domain used by JMX MBeans (provided JMX management is enabled). <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JMX_DOMAIN}.
*/
String getJMXDomain();
/**
* Sets the domain used by JMX MBeans (provided JMX management is enabled).
* <p>
* Changing this JMX domain is required if multiple ActiveMQ Artemis servers are run inside
* the same JVM and all servers are using the same MBeanServer.
*/
Configuration setJMXDomain(String domain);
/**
* whether or not to use the broker name in the JMX tree
*/
boolean isJMXUseBrokerName();
/**
* whether or not to use the broker name in the JMX tree
*/
ConfigurationImpl setJMXUseBrokerName(boolean jmxUseBrokerName);
/**
* Returns the list of interceptors classes used by this server for incoming messages (i.e. those being delivered to
* the server from clients).
*/
List<String> getIncomingInterceptorClassNames();
/**
* Returns the list of interceptors classes used by this server for outgoing messages (i.e. those being delivered to
* clients from the server).
*/
List<String> getOutgoingInterceptorClassNames();
/**
* Sets the list of interceptors classes used by this server for incoming messages (i.e. those being delivered to
* the server from clients).
* <br>
* Classes must implement {@link org.apache.activemq.artemis.api.core.Interceptor}.
*/
Configuration setIncomingInterceptorClassNames(List<String> interceptors);
/**
* Sets the list of interceptors classes used by this server for outgoing messages (i.e. those being delivered to
* clients from the server).
* <br>
* Classes must implement {@link org.apache.activemq.artemis.api.core.Interceptor}.
*/
Configuration setOutgoingInterceptorClassNames(List<String> interceptors);
/**
* Returns the connection time to live. <br>
* This value overrides the connection time to live <em>sent by the client</em>. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_CONNECTION_TTL_OVERRIDE}.
*/
long getConnectionTTLOverride();
/**
* Sets the connection time to live.
*/
Configuration setConnectionTTLOverride(long ttl);
/**
* Returns whether code coming from connection is executed asynchronously or not. <br>
* Default value is
* {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_ASYNC_CONNECTION_EXECUTION_ENABLED}.
*/
boolean isAsyncConnectionExecutionEnabled();
/**
* Sets whether code coming from connection is executed asynchronously or not.
*/
Configuration setEnabledAsyncConnectionExecution(boolean enabled);
/**
* Returns the acceptors configured for this server.
*/
Set<TransportConfiguration> getAcceptorConfigurations();
/**
* Sets the acceptors configured for this server.
*/
Configuration setAcceptorConfigurations(Set<TransportConfiguration> infos);
Configuration addAcceptorConfiguration(final TransportConfiguration infos);
/**
* Add an acceptor to the config
*
* @param name the name of the acceptor
* @param uri the URI of the acceptor
* @return this
* @throws Exception in case of Parsing errors on the URI
*/
Configuration addAcceptorConfiguration(String name, String uri) throws Exception;
Configuration clearAcceptorConfigurations();
/**
* Returns the connectors configured for this server.
*/
Map<String, TransportConfiguration> getConnectorConfigurations();
/**
* Sets the connectors configured for this server.
*/
Configuration setConnectorConfigurations(Map<String, TransportConfiguration> infos);
Configuration addConnectorConfiguration(final String key, final TransportConfiguration info);
Configuration addConnectorConfiguration(final String name, final String uri) throws Exception;
Configuration clearConnectorConfigurations();
/**
* Returns the broadcast groups configured for this server.
*/
List<BroadcastGroupConfiguration> getBroadcastGroupConfigurations();
/**
* Sets the broadcast groups configured for this server.
*/
Configuration setBroadcastGroupConfigurations(List<BroadcastGroupConfiguration> configs);
Configuration addBroadcastGroupConfiguration(final BroadcastGroupConfiguration config);
/**
* Returns the discovery groups configured for this server.
*/
Map<String, DiscoveryGroupConfiguration> getDiscoveryGroupConfigurations();
/**
* Sets the discovery groups configured for this server.
*/
Configuration setDiscoveryGroupConfigurations(Map<String, DiscoveryGroupConfiguration> configs);
Configuration addDiscoveryGroupConfiguration(final String key,
DiscoveryGroupConfiguration discoveryGroupConfiguration);
/**
* Returns the grouping handler configured for this server.
*/
GroupingHandlerConfiguration getGroupingHandlerConfiguration();
/**
* Sets the grouping handler configured for this server.
*/
Configuration setGroupingHandlerConfiguration(GroupingHandlerConfiguration groupingHandlerConfiguration);
/**
* Returns the bridges configured for this server.
*/
List<BridgeConfiguration> getBridgeConfigurations();
/**
* Sets the bridges configured for this server.
*/
Configuration setBridgeConfigurations(final List<BridgeConfiguration> configs);
/**
* Returns the diverts configured for this server.
*/
List<DivertConfiguration> getDivertConfigurations();
/**
* Sets the diverts configured for this server.
*/
Configuration setDivertConfigurations(final List<DivertConfiguration> configs);
Configuration addDivertConfiguration(final DivertConfiguration config);
/**
* Returns the cluster connections configured for this server.
* <p>
* Modifying the returned list will modify the list of {@link ClusterConnectionConfiguration}
* used by this configuration.
*/
List<ClusterConnectionConfiguration> getClusterConfigurations();
/**
* Sets the cluster connections configured for this server.
*/
Configuration setClusterConfigurations(final List<ClusterConnectionConfiguration> configs);
Configuration addClusterConfiguration(final ClusterConnectionConfiguration config);
ClusterConnectionConfiguration addClusterConfiguration(String name, String uri) throws Exception;
Configuration clearClusterConfigurations();
/**
* Returns the queues configured for this server.
*/
List<CoreQueueConfiguration> getQueueConfigurations();
/**
* Sets the queues configured for this server.
*/
Configuration setQueueConfigurations(final List<CoreQueueConfiguration> configs);
Configuration addQueueConfiguration(final CoreQueueConfiguration config);
/**
* Returns the addresses configured for this server.
*/
List<CoreAddressConfiguration> getAddressConfigurations();
/**
* Sets the addresses configured for this server.
*/
Configuration setAddressConfigurations(final List<CoreAddressConfiguration> configs);
/**
* Adds an addresses configuration
*/
Configuration addAddressConfiguration(final CoreAddressConfiguration config);
/**
* Returns the management address of this server. <br>
* Clients can send management messages to this address to manage this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MANAGEMENT_ADDRESS}.
*/
SimpleString getManagementAddress();
/**
* Sets the management address of this server.
*/
Configuration setManagementAddress(SimpleString address);
/**
* Returns the management notification address of this server. <br>
* Clients can bind queues to this address to receive management notifications emitted by this
* server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MANAGEMENT_NOTIFICATION_ADDRESS}.
*/
SimpleString getManagementNotificationAddress();
/**
* Sets the management notification address of this server.
*/
Configuration setManagementNotificationAddress(SimpleString address);
/**
* Returns the cluster user for this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_CLUSTER_USER}.
*/
String getClusterUser();
/**
* Sets the cluster user for this server.
*/
Configuration setClusterUser(String user);
/**
* Returns the cluster password for this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_CLUSTER_PASSWORD}.
*/
String getClusterPassword();
/**
* Sets the cluster password for this server.
*/
Configuration setClusterPassword(String password);
/**
* Returns the size of the cache for pre-creating message IDs. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_ID_CACHE_SIZE}.
*/
int getIDCacheSize();
/**
* Sets the size of the cache for pre-creating message IDs.
*/
Configuration setIDCacheSize(int idCacheSize);
/**
* Returns whether message ID cache is persisted. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_PERSIST_ID_CACHE}.
*/
boolean isPersistIDCache();
/**
* Sets whether message ID cache is persisted.
*/
Configuration setPersistIDCache(boolean persist);
// Journal related attributes ------------------------------------------------------------
/**
* Returns the file system directory used to store bindings. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_BINDINGS_DIRECTORY}.
*/
String getBindingsDirectory();
/**
* The binding location related to artemis.instance.
*/
File getBindingsLocation();
/**
* Sets the file system directory used to store bindings.
*/
Configuration setBindingsDirectory(String dir);
/**
* The max number of concurrent reads allowed on paging.
* <p>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MAX_CONCURRENT_PAGE_IO}.
*/
int getPageMaxConcurrentIO();
/**
* The max number of concurrent reads allowed on paging.
* <p>
* Default = 5
*/
Configuration setPageMaxConcurrentIO(int maxIO);
/**
* Returns the file system directory used to store journal log. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_DIR}.
*/
String getJournalDirectory();
/**
* The location of the journal related to artemis.instance.
*
* @return
*/
File getJournalLocation();
/**
* Sets the file system directory used to store journal log.
*/
Configuration setJournalDirectory(String dir);
/**
* Returns the type of journal used by this server ({@code NIO}, {@code ASYNCIO} or {@code MAPPED}).
* <br>
* Default value is ASYNCIO.
*/
JournalType getJournalType();
/**
* Sets the type of journal used by this server (either {@code NIO} or {@code ASYNCIO}).
*/
Configuration setJournalType(JournalType type);
/**
* Returns whether the journal is synchronized when receiving transactional data. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_SYNC_TRANSACTIONAL}.
*/
boolean isJournalSyncTransactional();
/**
* Sets whether the journal is synchronized when receiving transactional data.
*/
Configuration setJournalSyncTransactional(boolean sync);
/**
* Returns whether the journal is synchronized when receiving non-transactional data. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_SYNC_NON_TRANSACTIONAL}.
*/
boolean isJournalSyncNonTransactional();
/**
* Sets whether the journal is synchronized when receiving non-transactional data.
*/
Configuration setJournalSyncNonTransactional(boolean sync);
/**
* Returns the size (in bytes) of each journal files. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_FILE_SIZE}.
*/
int getJournalFileSize();
/**
* Sets the size (in bytes) of each journal files.
*/
Configuration setJournalFileSize(int size);
/**
* Returns the minimal number of journal files before compacting. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_COMPACT_MIN_FILES}.
*/
int getJournalCompactMinFiles();
/**
* Sets the minimal number of journal files before compacting.
*/
Configuration setJournalCompactMinFiles(int minFiles);
/**
* Number of files that would be acceptable to keep on a pool. Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_POOL_FILES}.
*/
int getJournalPoolFiles();
/**
* Number of files that would be acceptable to keep on a pool. Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_POOL_FILES}.
*/
Configuration setJournalPoolFiles(int poolSize);
/**
* Returns the percentage of live data before compacting the journal. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_COMPACT_PERCENTAGE}.
*/
int getJournalCompactPercentage();
/**
* Sets the percentage of live data before compacting the journal.
*/
Configuration setJournalCompactPercentage(int percentage);
/**
* Returns the number of journal files to pre-create. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_MIN_FILES}.
*/
int getJournalMinFiles();
/**
* Sets the number of journal files to pre-create.
*/
Configuration setJournalMinFiles(int files);
// AIO and NIO need different values for these params
/**
* Returns the maximum number of write requests that can be in the AIO queue at any given time. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_MAX_IO_AIO}.
*/
int getJournalMaxIO_AIO();
/**
* Sets the maximum number of write requests that can be in the AIO queue at any given time.
*/
Configuration setJournalMaxIO_AIO(int journalMaxIO);
/**
* Returns the timeout (in nanoseconds) used to flush buffers in the AIO queue.
* <br>
* Default value is {@link org.apache.activemq.artemis.ArtemisConstants#DEFAULT_JOURNAL_BUFFER_TIMEOUT_AIO}.
*/
int getJournalBufferTimeout_AIO();
/**
* Sets the timeout (in nanoseconds) used to flush buffers in the AIO queue.
*/
Configuration setJournalBufferTimeout_AIO(int journalBufferTimeout);
/**
* Returns the buffer size (in bytes) for AIO.
* <br>
* Default value is {@link org.apache.activemq.artemis.ArtemisConstants#DEFAULT_JOURNAL_BUFFER_SIZE_AIO}.
*/
int getJournalBufferSize_AIO();
/**
* Sets the buffer size (in bytes) for AIO.
*/
Configuration setJournalBufferSize_AIO(int journalBufferSize);
/**
* Returns the maximum number of write requests for NIO journal. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_JOURNAL_MAX_IO_NIO}.
*/
int getJournalMaxIO_NIO();
/**
* Sets the maximum number of write requests for NIO journal.
*/
Configuration setJournalMaxIO_NIO(int journalMaxIO);
/**
* Returns the timeout (in nanoseconds) used to flush buffers in the NIO.
* <br>
* Default value is {@link org.apache.activemq.artemis.ArtemisConstants#DEFAULT_JOURNAL_BUFFER_TIMEOUT_NIO}.
*/
int getJournalBufferTimeout_NIO();
/**
* Sets the timeout (in nanoseconds) used to flush buffers in the NIO.
*/
Configuration setJournalBufferTimeout_NIO(int journalBufferTimeout);
/**
* Returns the buffer size (in bytes) for NIO.
* <br>
* Default value is {@link org.apache.activemq.artemis.ArtemisConstants#DEFAULT_JOURNAL_BUFFER_SIZE_NIO}.
*/
int getJournalBufferSize_NIO();
/**
* Sets the buffer size (in bytes) for NIO.
*/
Configuration setJournalBufferSize_NIO(int journalBufferSize);
/**
* Returns whether the bindings directory is created on this server startup. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_CREATE_BINDINGS_DIR}.
*/
boolean isCreateBindingsDir();
/**
* Sets whether the bindings directory is created on this server startup.
*/
Configuration setCreateBindingsDir(boolean create);
/**
* Returns whether the journal directory is created on this server startup. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_CREATE_JOURNAL_DIR}.
*/
boolean isCreateJournalDir();
/**
* Sets whether the journal directory is created on this server startup.
*/
Configuration setCreateJournalDir(boolean create);
// Undocumented attributes
boolean isLogJournalWriteRate();
Configuration setLogJournalWriteRate(boolean rate);
long getServerDumpInterval();
Configuration setServerDumpInterval(long interval);
int getMemoryWarningThreshold();
Configuration setMemoryWarningThreshold(int memoryWarningThreshold);
long getMemoryMeasureInterval();
Configuration setMemoryMeasureInterval(long memoryMeasureInterval);
// Paging Properties --------------------------------------------------------------------
/**
* Returns the file system directory used to store paging files. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_PAGING_DIR}.
*/
String getPagingDirectory();
/**
* Sets the file system directory used to store paging files.
*/
Configuration setPagingDirectory(String dir);
/**
* The paging location related to artemis.instance
*/
File getPagingLocation();
// Large Messages Properties ------------------------------------------------------------
/**
* Returns the file system directory used to store large messages. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_LARGE_MESSAGES_DIR}.
*/
String getLargeMessagesDirectory();
/**
* The large message location related to artemis.instance
*/
File getLargeMessagesLocation();
/**
* Sets the file system directory used to store large messages.
*/
Configuration setLargeMessagesDirectory(String directory);
// Other Properties ---------------------------------------------------------------------
/**
* Returns whether wildcard routing is supported by this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_WILDCARD_ROUTING_ENABLED}.
*/
boolean isWildcardRoutingEnabled();
/**
* Sets whether wildcard routing is supported by this server.
*/
Configuration setWildcardRoutingEnabled(boolean enabled);
WildcardConfiguration getWildcardConfiguration();
Configuration setWildCardConfiguration(WildcardConfiguration wildcardConfiguration);
/**
* Returns the timeout (in milliseconds) after which transactions is removed from the resource
* manager after it was created. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_TRANSACTION_TIMEOUT}.
*/
long getTransactionTimeout();
/**
* Sets the timeout (in milliseconds) after which transactions is removed
* from the resource manager after it was created.
*/
Configuration setTransactionTimeout(long timeout);
/**
* Returns whether message counter is enabled for this server. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MESSAGE_COUNTER_ENABLED}.
*/
boolean isMessageCounterEnabled();
/**
* Sets whether message counter is enabled for this server.
*/
Configuration setMessageCounterEnabled(boolean enabled);
/**
* Returns the sample period (in milliseconds) to take message counter snapshot. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MESSAGE_COUNTER_SAMPLE_PERIOD}.
*/
long getMessageCounterSamplePeriod();
/**
* Sets the sample period to take message counter snapshot.
*
* @param period value must be greater than 1000ms
*/
Configuration setMessageCounterSamplePeriod(long period);
/**
* Returns the maximum number of days kept in memory for message counter. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MESSAGE_COUNTER_MAX_DAY_HISTORY}.
*/
int getMessageCounterMaxDayHistory();
/**
* Sets the maximum number of days kept in memory for message counter.
*
* @param maxDayHistory value must be greater than 0
*/
Configuration setMessageCounterMaxDayHistory(int maxDayHistory);
/**
* Returns the frequency (in milliseconds) to scan transactions to detect which transactions have
* timed out. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_TRANSACTION_TIMEOUT_SCAN_PERIOD}.
*/
long getTransactionTimeoutScanPeriod();
/**
* Sets the frequency (in milliseconds) to scan transactions to detect which transactions
* have timed out.
*/
Configuration setTransactionTimeoutScanPeriod(long period);
/**
* Returns the frequency (in milliseconds) to scan messages to detect which messages have
* expired. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MESSAGE_EXPIRY_SCAN_PERIOD}.
*/
long getMessageExpiryScanPeriod();
/**
* Sets the frequency (in milliseconds) to scan messages to detect which messages
* have expired.
*/
Configuration setMessageExpiryScanPeriod(long messageExpiryScanPeriod);
/**
* Returns the priority of the thread used to scan message expiration. <br>
* Default value is {@link org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_MESSAGE_EXPIRY_THREAD_PRIORITY}.
*/
int getMessageExpiryThreadPriority();
/**
* Sets the priority of the thread used to scan message expiration.
*/
Configuration setMessageExpiryThreadPriority(int messageExpiryThreadPriority);
/**
* @return A list of AddressSettings per matching to be deployed to the address settings repository
*/
Map<String, AddressSettings> getAddressesSettings();
/**
* @param addressesSettings list of AddressSettings per matching to be deployed to the address
* settings repository
*/
Configuration setAddressesSettings(Map<String, AddressSettings> addressesSettings);
Configuration addAddressesSetting(String key, AddressSettings addressesSetting);
Configuration clearAddressesSettings();
/**
* @param roles a list of roles per matching
*/
Configuration setSecurityRoles(Map<String, Set<Role>> roles);
/**
* @return a list of roles per matching
*/
Map<String, Set<Role>> getSecurityRoles();
Configuration addSecurityRoleNameMapping(String internalRole, Set<String> externalRoles);
Map<String, Set<String>> getSecurityRoleNameMappings();
Configuration putSecurityRoles(String match, Set<Role> roles);
Configuration setConnectorServiceConfigurations(List<ConnectorServiceConfiguration> configs);
Configuration addConnectorServiceConfiguration(ConnectorServiceConfiguration config);
Configuration setSecuritySettingPlugins(final List<SecuritySettingPlugin> plugins);
Configuration addSecuritySettingPlugin(final SecuritySettingPlugin plugin);
/**
* @return list of {@link ConnectorServiceConfiguration}
*/
List<ConnectorServiceConfiguration> getConnectorServiceConfigurations();
List<SecuritySettingPlugin> getSecuritySettingPlugins();
/**
* The default password decoder
*/
Configuration setPasswordCodec(String codec);
/**
* Gets the default password decoder
*/
String getPasswordCodec();
/**
* Sets if passwords should be masked or not. True means the passwords should be masked.
*/
Configuration setMaskPassword(boolean maskPassword);
/**
* If passwords are masked. True means the passwords are masked.
*/
boolean isMaskPassword();
/*
* Whether or not that ActiveMQ Artemis should use all protocols available on the classpath. If false only the core protocol will
* be set, any other protocols will need to be set directly on the ActiveMQServer
* */
Configuration setResolveProtocols(boolean resolveProtocols);
TransportConfiguration[] getTransportConfigurations(String... connectorNames);
TransportConfiguration[] getTransportConfigurations(List<String> connectorNames);
/*
* @see #setResolveProtocols()
* @return whether ActiveMQ Artemis should resolve and use any Protocols available on the classpath
* Default value is {@link org.apache.activemq.artemis.api.config.org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration#DEFAULT_RESOLVE_PROTOCOLS}.
* */
boolean isResolveProtocols();
Configuration copy() throws Exception;
Configuration setJournalLockAcquisitionTimeout(long journalLockAcquisitionTimeout);
long getJournalLockAcquisitionTimeout();
HAPolicyConfiguration getHAPolicyConfiguration();
Configuration setHAPolicyConfiguration(HAPolicyConfiguration haPolicyConfiguration);
/**
* Set the Artemis instance relative folder for data and stuff.
*/
void setBrokerInstance(File directory);
/**
* Set the Artemis instance relative folder for data and stuff.
*/
File getBrokerInstance();
StoreConfiguration getStoreConfiguration();
Configuration setStoreConfiguration(StoreConfiguration storeConfiguration);
boolean isPopulateValidatedUser();
Configuration setPopulateValidatedUser(boolean populateValidatedUser);
/**
* It will return all the connectors in a toString manner for debug purposes.
*/
String debugConnectors();
Configuration setConnectionTtlCheckInterval(long connectionTtlCheckInterval);
long getConnectionTtlCheckInterval();
URL getConfigurationUrl();
Configuration setConfigurationUrl(URL configurationUrl);
long getConfigurationFileRefreshPeriod();
Configuration setConfigurationFileRefreshPeriod(long configurationFileRefreshPeriod);
long getGlobalMaxSize();
Configuration setGlobalMaxSize(long globalMaxSize);
int getMaxDiskUsage();
Configuration setMaxDiskUsage(int maxDiskUsage);
ConfigurationImpl setInternalNamingPrefix(String internalNamingPrefix);
Configuration setDiskScanPeriod(int diskScanPeriod);
int getDiskScanPeriod();
/** A comma separated list of IPs we could use to validate if the network is UP.
* In case of none of these Ips are reached (if configured) the server will be shutdown. */
Configuration setNetworkCheckList(String list);
String getNetworkCheckList();
/** A comma separated list of URIs we could use to validate if the network is UP.
* In case of none of these Ips are reached (if configured) the server will be shutdown.
* The difference from networkCheckList is that we will use HTTP to make this validation. */
Configuration setNetworkCheckURLList(String uris);
String getNetworkCheckURLList();
/** The interval on which we will perform network checks. */
Configuration setNetworkCheckPeriod(long period);
long getNetworkCheckPeriod();
/** Time in ms for how long we should wait for a ping to finish. */
Configuration setNetworkCheckTimeout(int timeout);
int getNetworkCheckTimeout();
/** The NIC name to be used on network checks */
Configuration setNetworCheckNIC(String nic);
String getNetworkCheckNIC();
String getNetworkCheckPingCommand();
Configuration setNetworkCheckPingCommand(String command);
String getNetworkCheckPing6Command();
Configuration setNetworkCheckPing6Command(String command);
String getInternalNamingPrefix();
/**
* @param plugins
*/
void registerBrokerPlugins(List<ActiveMQServerPlugin> plugins);
/**
* @param plugin
*/
void registerBrokerPlugin(ActiveMQServerPlugin plugin);
/**
* @param plugin
*/
void unRegisterBrokerPlugin(ActiveMQServerPlugin plugin);
/**
* @return
*/
List<ActiveMQServerPlugin> getBrokerPlugins();
}