mirror of
https://github.com/apache/activemq-artemis.git
synced 2025-02-28 22:39:27 +00:00
ARTEMIS-4398 - support configuring database using Broker Properties
https://issues.apache.org/jira/browse/ARTEMIS-4398
This commit is contained in:
parent
c1648d5917
commit
6b053dd290
@ -84,6 +84,7 @@ import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory;
|
||||
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
|
||||
import org.apache.activemq.artemis.core.security.Role;
|
||||
import org.apache.activemq.artemis.core.server.ActiveMQServerLogger;
|
||||
import org.apache.activemq.artemis.core.server.ActiveMQMessageBundle;
|
||||
import org.apache.activemq.artemis.core.server.JournalType;
|
||||
import org.apache.activemq.artemis.core.server.NetworkHealthCheck;
|
||||
import org.apache.activemq.artemis.core.server.SecuritySettingPlugin;
|
||||
@ -773,6 +774,17 @@ public class ConfigurationImpl implements Configuration, Serializable {
|
||||
}
|
||||
}, TransformerConfiguration.class);
|
||||
|
||||
beanUtils.getConvertUtils().register(new Converter() {
|
||||
@Override
|
||||
public <T> T convert(Class<T> type, Object value) {
|
||||
//we only care about DATABASE type as it is the only one used
|
||||
if (StoreConfiguration.StoreType.DATABASE.toString().equals(value)) {
|
||||
return (T) new DatabaseStorageConfiguration();
|
||||
}
|
||||
throw ActiveMQMessageBundle.BUNDLE.unsupportedStorePropertyType();
|
||||
}
|
||||
}, StoreConfiguration.class);
|
||||
|
||||
beanUtils.getConvertUtils().register(new Converter() {
|
||||
@Override
|
||||
public <T> T convert(Class<T> type, Object value) {
|
||||
|
@ -536,4 +536,7 @@ public interface ActiveMQMessageBundle {
|
||||
|
||||
@Message(id = 229248, value = "Invalid value for webSocketEncoderType: '{}'. Supported values: 'binary', 'text'.")
|
||||
IllegalStateException invalidWebSocketEncoderType(String webSocketEncoderType);
|
||||
|
||||
@Message(id = 229249, value = "Invalid Store property, only DATABASE property is supported")
|
||||
RuntimeException unsupportedStorePropertyType();
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ import org.apache.activemq.artemis.core.config.federation.FederationAddressPolic
|
||||
import org.apache.activemq.artemis.core.config.federation.FederationPolicySet;
|
||||
import org.apache.activemq.artemis.core.config.federation.FederationQueuePolicyConfiguration;
|
||||
import org.apache.activemq.artemis.core.config.ha.LiveOnlyPolicyConfiguration;
|
||||
import org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration;
|
||||
import org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser;
|
||||
import org.apache.activemq.artemis.core.io.SequentialFileFactory;
|
||||
import org.apache.activemq.artemis.core.paging.PagingManager;
|
||||
@ -1554,6 +1555,59 @@ public class ConfigurationImplTest extends ActiveMQTestBase {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDatabaseStoreConfigurationProps() throws Exception {
|
||||
ConfigurationImpl configuration = new ConfigurationImpl();
|
||||
Properties insertionOrderedProperties = new ConfigurationImpl.InsertionOrderedProperties();
|
||||
insertionOrderedProperties.put("storeConfiguration", "DATABASE");
|
||||
insertionOrderedProperties.put("storeConfiguration.largeMessageTableName", "lmtn");
|
||||
insertionOrderedProperties.put("storeConfiguration.messageTableName", "mtn");
|
||||
insertionOrderedProperties.put("storeConfiguration.bindingsTableName", "btn");
|
||||
insertionOrderedProperties.put("storeConfiguration.dataSourceClassName", "dscn");
|
||||
insertionOrderedProperties.put("storeConfiguration.nodeManagerStoreTableName", "nmtn");
|
||||
insertionOrderedProperties.put("storeConfiguration.pageStoreTableName", "pstn");
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcAllowedTimeDiff", 123);
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcConnectionUrl", "url");
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcDriverClassName", "dcn");
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcJournalSyncPeriodMillis", 456);
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcLockAcquisitionTimeoutMillis", 789);
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcLockExpirationMillis", 321);
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcLockRenewPeriodMillis", 654);
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcNetworkTimeout", 987);
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcPassword", "pass");
|
||||
insertionOrderedProperties.put("storeConfiguration.jdbcUser", "user");
|
||||
configuration.parsePrefixedProperties(insertionOrderedProperties, null);
|
||||
Assert.assertTrue(configuration.getStoreConfiguration() instanceof DatabaseStorageConfiguration);
|
||||
DatabaseStorageConfiguration dsc = (DatabaseStorageConfiguration) configuration.getStoreConfiguration();
|
||||
Assert.assertEquals(dsc.getLargeMessageTableName(), "lmtn");
|
||||
Assert.assertEquals(dsc.getMessageTableName(), "mtn");
|
||||
Assert.assertEquals(dsc.getBindingsTableName(), "btn");
|
||||
Assert.assertEquals(dsc.getDataSourceClassName(), "dscn");
|
||||
Assert.assertEquals(dsc.getJdbcAllowedTimeDiff(), 123);
|
||||
Assert.assertEquals(dsc.getJdbcConnectionUrl(), "url");
|
||||
Assert.assertEquals(dsc.getJdbcDriverClassName(), "dcn");
|
||||
Assert.assertEquals(dsc.getJdbcJournalSyncPeriodMillis(), 456);
|
||||
Assert.assertEquals(dsc.getJdbcLockAcquisitionTimeoutMillis(), 789);
|
||||
Assert.assertEquals(dsc.getJdbcLockExpirationMillis(), 321);
|
||||
Assert.assertEquals(dsc.getJdbcLockRenewPeriodMillis(), 654);
|
||||
Assert.assertEquals(dsc.getJdbcNetworkTimeout(), 987);
|
||||
Assert.assertEquals(dsc.getJdbcPassword(), "pass");
|
||||
Assert.assertEquals(dsc.getJdbcUser(), "user");
|
||||
Assert.assertEquals(dsc.getNodeManagerStoreTableName(), "nmtn");
|
||||
Assert.assertEquals(dsc.getPageStoreTableName(), "pstn");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidStoreConfigurationProps() throws Exception {
|
||||
ConfigurationImpl configuration = new ConfigurationImpl();
|
||||
Properties insertionOrderedProperties = new ConfigurationImpl.InsertionOrderedProperties();
|
||||
insertionOrderedProperties.put("storeConfiguration", "File");
|
||||
configuration.parsePrefixedProperties(insertionOrderedProperties, null);
|
||||
String status = configuration.getStatus();
|
||||
//test for exception code
|
||||
Assert.assertTrue(status.contains("AMQ229249"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEnumConversion() throws Exception {
|
||||
ConfigurationImpl configuration = new ConfigurationImpl();
|
||||
|
Loading…
x
Reference in New Issue
Block a user