@Override public String toString() { StringBuilder sb = new StringBuilder("Broker Configuration ("); sb.append("clustered=").append(isClustered()).append(","); if (isJDBC()) { DatabaseStorageConfiguration dsc = (DatabaseStorageConfiguration) getStoreConfiguration(); sb.append("jdbcDriverClassName=").append(dsc.getJdbcDriverClassName()).append(","); sb.append("jdbcConnectionUrl=").append(dsc.getJdbcConnectionUrl()).append(","); sb.append("messageTableName=").append(dsc.getMessageTableName()).append(","); sb.append("bindingsTableName=").append(dsc.getBindingsTableName()).append(","); sb.append("largeMessageTableName=").append(dsc.getLargeMessageTableName()).append(","); sb.append("pageStoreTableName=").append(dsc.getPageStoreTableName()).append(","); } else { sb.append("journalDirectory=").append(journalDirectory).append(","); sb.append("bindingsDirectory=").append(bindingsDirectory).append(","); sb.append("largeMessagesDirectory=").append(largeMessagesDirectory).append(","); sb.append("pagingDirectory=").append(pagingDirectory); } sb.append(")"); return sb.toString(); }
private TestJDBCDriver createFakeDriver(boolean initializeTable) { return TestJDBCDriver.usingConnectionUrl( dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, initializeTable); }
private JdbcSharedStateManager createSharedStateManager() { return JdbcSharedStateManager.usingConnectionUrl( UUID.randomUUID().toString(), dbConf.getJdbcLockExpirationMillis(), dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); }
private void parseDBConfig() throws Exception { if (jdbc == null) { FileConfiguration fileConfiguration = getFileConfiguration(); jdbc = fileConfiguration.isJDBC(); if (jdbc) { DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) fileConfiguration.getStoreConfiguration(); jdbcBindings = storageConfiguration.getBindingsTableName(); jdbcMessages = storageConfiguration.getMessageTableName(); jdbcLargeMessages = storageConfiguration.getLargeMessageTableName(); jdbcPageStore = storageConfiguration.getPageStoreTableName(); jdbcNodeManager = storageConfiguration.getNodeManagerStoreTableName(); jdbcURL = storageConfiguration.getJdbcConnectionUrl(); jdbcClassName = storageConfiguration.getJdbcDriverClassName(); } } }
private void parseDBConfig() throws Exception { if (jdbc == null) { FileConfiguration fileConfiguration = getFileConfiguration(); jdbc = fileConfiguration.isJDBC(); if (jdbc) { DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) fileConfiguration.getStoreConfiguration(); jdbcBindings = storageConfiguration.getBindingsTableName(); jdbcMessages = storageConfiguration.getMessageTableName(); jdbcLargeMessages = storageConfiguration.getLargeMessageTableName(); jdbcPageStore = storageConfiguration.getPageStoreTableName(); jdbcNodeManager = storageConfiguration.getNodeManagerStoreTableName(); jdbcURL = storageConfiguration.getJdbcConnectionUrl(); jdbcClassName = storageConfiguration.getJdbcDriverClassName(); } } }
@Before public void setup() throws Exception { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getMessageTableName(), SQLProvider.DatabaseStoreType.MESSAGE_JOURNAL); scheduledExecutorService = new ScheduledThreadPoolExecutor(5); executorService = Executors.newSingleThreadExecutor(); journal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, scheduledExecutorService, executorService, new IOCriticalErrorListener() { @Override public void onIOException(Throwable code, String message, SequentialFile file) { } }, 5); journal.start(); }
@Before public void createLockTable() throws Exception { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); if (withExistingTable) { TestJDBCDriver testDriver = TestJDBCDriver .usingConnectionUrl( dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); testDriver.start(); testDriver.stop(); } jdbcSharedStateManager = JdbcSharedStateManager .usingConnectionUrl( UUID.randomUUID().toString(), dbConf.getJdbcLockExpirationMillis(), dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); }
public synchronized void start() throws Exception { if (!started) { //fix to prevent page table names to be longer than 30 chars (upper limit for Oracle12c identifiers length) final String pageStoreTableNamePrefix = dbConf.getPageStoreTableName(); if (pageStoreTableNamePrefix.length() > 10) { throw new IllegalStateException("The maximum name size for the page store table prefix is 10 characters: THE PAGING STORE CAN'T START"); } if (dbConf.getDataSource() != null) { SQLProvider.Factory sqlProviderFactory = dbConf.getSqlProviderFactory(); if (sqlProviderFactory == null) { sqlProviderFactory = new PropertySQLProvider.Factory(dbConf.getDataSource()); } pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getDataSource(), sqlProviderFactory.create(pageStoreTableNamePrefix, SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor(), criticalErrorListener); } else { String driverClassName = dbConf.getJdbcDriverClassName(); pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, pageStoreTableNamePrefix, SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor(), criticalErrorListener); } final int jdbcNetworkTimeout = dbConf.getJdbcNetworkTimeout(); if (jdbcNetworkTimeout >= 0) { pagingFactoryFileFactory.setNetworkTimeout(this.executorFactory.getExecutor(), jdbcNetworkTimeout); } pagingFactoryFileFactory.start(); started = true; } } // Public --------------------------------------------------------
configuration.getJdbcLockRenewPeriodMillis(), configuration.getJdbcLockAcquisitionTimeoutMillis(), configuration.getJdbcConnectionUrl(), configuration.getJdbcDriverClassName(), sqlProvider,
private DatabaseStorageConfiguration createDatabaseStoreConfig(Element storeNode) { DatabaseStorageConfiguration conf = new DatabaseStorageConfiguration(); conf.setBindingsTableName(getString(storeNode, "bindings-table-name", conf.getBindingsTableName(), Validators.NO_CHECK)); conf.setMessageTableName(getString(storeNode, "message-table-name", conf.getMessageTableName(), Validators.NO_CHECK)); conf.setLargeMessageTableName(getString(storeNode, "large-message-table-name", conf.getJdbcConnectionUrl(), Validators.NO_CHECK)); conf.setPageStoreTableName(getString(storeNode, "page-store-table-name", conf.getPageStoreTableName(), Validators.NO_CHECK)); conf.setNodeManagerStoreTableName(getString(storeNode, "node-manager-store-table-name", conf.getNodeManagerStoreTableName(), Validators.NO_CHECK)); conf.setJdbcConnectionUrl(getString(storeNode, "jdbc-connection-url", conf.getJdbcConnectionUrl(), Validators.NO_CHECK)); conf.setJdbcDriverClassName(getString(storeNode, "jdbc-driver-class-name", conf.getJdbcDriverClassName(), Validators.NO_CHECK)); conf.setJdbcNetworkTimeout(getInteger(storeNode, "jdbc-network-timeout", conf.getJdbcNetworkTimeout(), Validators.NO_CHECK)); conf.setJdbcLockRenewPeriodMillis(getLong(storeNode, "jdbc-lock-renew-period", conf.getJdbcLockRenewPeriodMillis(), Validators.NO_CHECK)); conf.setJdbcLockExpirationMillis(getLong(storeNode, "jdbc-lock-expiration", conf.getJdbcLockExpirationMillis(), Validators.NO_CHECK)); conf.setJdbcJournalSyncPeriodMillis(getLong(storeNode, "jdbc-journal-sync-period", conf.getJdbcJournalSyncPeriodMillis(), Validators.NO_CHECK)); return conf; }
} else { String driverClassName = dbConf.getJdbcDriverClassName(); bindingsJournal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getBindingsTableName(), SQLProvider.DatabaseStoreType.BINDINGS_JOURNAL), scheduledExecutorService, executorFactory.getExecutor(), criticalErrorListener, dbConf.getJdbcJournalSyncPeriodMillis()); messageJournal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getMessageTableName(), SQLProvider.DatabaseStoreType.MESSAGE_JOURNAL), scheduledExecutorService, executorFactory.getExecutor(), criticalErrorListener, dbConf.getJdbcJournalSyncPeriodMillis()); largeMessagesFactory = new JDBCSequentialFileFactory(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getLargeMessageTableName(), SQLProvider.DatabaseStoreType.LARGE_MESSAGE), executorFactory.getExecutor(), criticalErrorListener);
@Test public void testConcurrentEmptyJournal() throws SQLException { Assert.assertTrue(journal.isStarted()); Assert.assertEquals(0, journal.getNumberOfRecords()); final JDBCJournalImpl secondJournal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, scheduledExecutorService, executorService, (code, message, file) -> { Assert.fail(message); }, 5); secondJournal.start(); try { Assert.assertTrue(secondJournal.isStarted()); } finally { secondJournal.stop(); } }