Class KahaDBPersistenceAdapter

All Implemented Interfaces:
BrokerServiceAware, Lockable, org.apache.activemq.Service, JournaledStore, NoLocalSubscriptionAware, PersistenceAdapter, TransactionIdTransformerAware

An implementation of PersistenceAdapter designed for use with KahaDB - Embedded Lightweight Non-Relational Database
  • Constructor Details

    • KahaDBPersistenceAdapter

      public KahaDBPersistenceAdapter()
  • Method Details

    • beginTransaction

      public void beginTransaction(ConnectionContext context) throws IOException
      Specified by:
      beginTransaction in interface PersistenceAdapter
      Parameters:
      context -
      Throws:
      IOException
      See Also:
    • checkpoint

      public void checkpoint(boolean cleanup) throws IOException
      Specified by:
      checkpoint in interface PersistenceAdapter
      Parameters:
      cleanup -
      Throws:
      IOException
      See Also:
    • commitTransaction

      public void commitTransaction(ConnectionContext context) throws IOException
      Specified by:
      commitTransaction in interface PersistenceAdapter
      Parameters:
      context -
      Throws:
      IOException
      See Also:
    • createQueueMessageStore

      public MessageStore createQueueMessageStore(org.apache.activemq.command.ActiveMQQueue destination) throws IOException
      Specified by:
      createQueueMessageStore in interface PersistenceAdapter
      Parameters:
      destination -
      Returns:
      MessageStore
      Throws:
      IOException
      See Also:
    • createTopicMessageStore

      public TopicMessageStore createTopicMessageStore(org.apache.activemq.command.ActiveMQTopic destination) throws IOException
      Specified by:
      createTopicMessageStore in interface PersistenceAdapter
      Parameters:
      destination -
      Returns:
      TopicMessageStore
      Throws:
      IOException
      See Also:
    • createTransactionStore

      public TransactionStore createTransactionStore() throws IOException
      Specified by:
      createTransactionStore in interface PersistenceAdapter
      Returns:
      TransactionStore
      Throws:
      IOException
      See Also:
    • deleteAllMessages

      public void deleteAllMessages() throws IOException
      Specified by:
      deleteAllMessages in interface PersistenceAdapter
      Throws:
      IOException
      See Also:
    • getDestinations

      public Set<org.apache.activemq.command.ActiveMQDestination> getDestinations()
      Specified by:
      getDestinations in interface PersistenceAdapter
      Returns:
      destinations
      See Also:
    • getLastMessageBrokerSequenceId

      public long getLastMessageBrokerSequenceId() throws IOException
      Specified by:
      getLastMessageBrokerSequenceId in interface PersistenceAdapter
      Returns:
      lastMessageBrokerSequenceId
      Throws:
      IOException
      See Also:
    • getLastProducerSequenceId

      public long getLastProducerSequenceId(org.apache.activemq.command.ProducerId id) throws IOException
      Specified by:
      getLastProducerSequenceId in interface PersistenceAdapter
      Throws:
      IOException
    • allowIOResumption

      public void allowIOResumption()
      Specified by:
      allowIOResumption in interface PersistenceAdapter
    • removeQueueMessageStore

      public void removeQueueMessageStore(org.apache.activemq.command.ActiveMQQueue destination)
      Specified by:
      removeQueueMessageStore in interface PersistenceAdapter
      Parameters:
      destination -
      See Also:
    • removeTopicMessageStore

      public void removeTopicMessageStore(org.apache.activemq.command.ActiveMQTopic destination)
      Specified by:
      removeTopicMessageStore in interface PersistenceAdapter
      Parameters:
      destination -
      See Also:
    • rollbackTransaction

      public void rollbackTransaction(ConnectionContext context) throws IOException
      Specified by:
      rollbackTransaction in interface PersistenceAdapter
      Parameters:
      context -
      Throws:
      IOException
      See Also:
    • setBrokerName

      public void setBrokerName(String brokerName)
      Specified by:
      setBrokerName in interface PersistenceAdapter
      Parameters:
      brokerName -
      See Also:
    • setUsageManager

      public void setUsageManager(SystemUsage usageManager)
      Specified by:
      setUsageManager in interface PersistenceAdapter
      Parameters:
      usageManager -
      See Also:
    • size

      public long size()
      Specified by:
      size in interface PersistenceAdapter
      Returns:
      the size of the store
      See Also:
    • doStart

      public void doStart() throws Exception
      Specified by:
      doStart in class ServiceSupport
      Throws:
      Exception
      See Also:
      • Service.start()
    • doStop

      public void doStop(ServiceStopper stopper) throws Exception
      Specified by:
      doStop in class ServiceSupport
      Throws:
      Exception
      See Also:
      • Service.stop()
    • getJournalMaxFileLength

      public int getJournalMaxFileLength()
      Get the journalMaxFileLength
      Specified by:
      getJournalMaxFileLength in interface JournaledStore
      Returns:
      the journalMaxFileLength
    • setJournalMaxFileLength

      public void setJournalMaxFileLength(int journalMaxFileLength)
      When set using Xbean, values of the form "20 Mb", "1024kb", and "1g" can be used
    • setMaxFailoverProducersToTrack

      public void setMaxFailoverProducersToTrack(int maxFailoverProducersToTrack)
      Set the max number of producers (LRU cache) to track for duplicate sends
    • getMaxFailoverProducersToTrack

      public int getMaxFailoverProducersToTrack()
    • setFailoverProducersAuditDepth

      public void setFailoverProducersAuditDepth(int failoverProducersAuditDepth)
      set the audit window depth for duplicate suppression (should exceed the max transaction batch)
    • getFailoverProducersAuditDepth

      public int getFailoverProducersAuditDepth()
    • getCheckpointInterval

      public long getCheckpointInterval()
      Get the checkpointInterval
      Returns:
      the checkpointInterval
    • setCheckpointInterval

      public void setCheckpointInterval(long checkpointInterval)
      Set the checkpointInterval
      Parameters:
      checkpointInterval - the checkpointInterval to set
    • getCleanupInterval

      public long getCleanupInterval()
      Get the cleanupInterval
      Returns:
      the cleanupInterval
    • setCleanupInterval

      public void setCleanupInterval(long cleanupInterval)
      Set the cleanupInterval
      Parameters:
      cleanupInterval - the cleanupInterval to set
    • getIndexWriteBatchSize

      public int getIndexWriteBatchSize()
      Get the indexWriteBatchSize
      Returns:
      the indexWriteBatchSize
    • setIndexWriteBatchSize

      public void setIndexWriteBatchSize(int indexWriteBatchSize)
      Set the indexWriteBatchSize When set using Xbean, values of the form "20 Mb", "1024kb", and "1g" can be used
      Parameters:
      indexWriteBatchSize - the indexWriteBatchSize to set
    • getJournalMaxWriteBatchSize

      public int getJournalMaxWriteBatchSize()
      Get the journalMaxWriteBatchSize
      Returns:
      the journalMaxWriteBatchSize
    • setJournalMaxWriteBatchSize

      public void setJournalMaxWriteBatchSize(int journalMaxWriteBatchSize)
      Set the journalMaxWriteBatchSize * When set using Xbean, values of the form "20 Mb", "1024kb", and "1g" can be used
      Parameters:
      journalMaxWriteBatchSize - the journalMaxWriteBatchSize to set
    • isEnableIndexWriteAsync

      public boolean isEnableIndexWriteAsync()
      Get the enableIndexWriteAsync
      Returns:
      the enableIndexWriteAsync
    • setEnableIndexWriteAsync

      public void setEnableIndexWriteAsync(boolean enableIndexWriteAsync)
      Set the enableIndexWriteAsync
      Parameters:
      enableIndexWriteAsync - the enableIndexWriteAsync to set
    • getPersistenceAdapterStatistics

      public PersistenceAdapterStatistics getPersistenceAdapterStatistics()
      Get the PersistenceAdapterStatistics
      Returns:
      the persistenceAdapterStatistics
    • getDirectory

      public File getDirectory()
      Get the directory
      Specified by:
      getDirectory in interface PersistenceAdapter
      Returns:
      the directory
    • setDirectory

      public void setDirectory(File dir)
      Specified by:
      setDirectory in interface PersistenceAdapter
      Parameters:
      dir -
      See Also:
    • getIndexDirectory

      public File getIndexDirectory()
      Returns:
      the currently configured location of the KahaDB index files.
    • setIndexDirectory

      public void setIndexDirectory(File indexDirectory)
      Sets the directory where KahaDB index files should be written.
      Parameters:
      indexDirectory - the directory where the KahaDB store index files should be written.
    • isEnableJournalDiskSyncs

      public boolean isEnableJournalDiskSyncs()
      Deprecated.
      Get the enableJournalDiskSyncs
      Returns:
      the enableJournalDiskSyncs
    • setEnableJournalDiskSyncs

      public void setEnableJournalDiskSyncs(boolean enableJournalDiskSyncs)
      Set the enableJournalDiskSyncs
      Parameters:
      enableJournalDiskSyncs - the enableJournalDiskSyncs to set
    • getJournalDiskSyncStrategy

      public String getJournalDiskSyncStrategy()
      Returns:
    • getJournalDiskSyncStrategyEnum

      public Journal.JournalDiskSyncStrategy getJournalDiskSyncStrategyEnum()
    • setJournalDiskSyncStrategy

      public void setJournalDiskSyncStrategy(String journalDiskSyncStrategy)
      Parameters:
      journalDiskSyncStrategy -
    • getJournalDiskSyncInterval

      public long getJournalDiskSyncInterval()
      Returns:
    • setJournalDiskSyncInterval

      public void setJournalDiskSyncInterval(long journalDiskSyncInterval)
      Parameters:
      journalDiskSyncInterval -
    • getIndexCacheSize

      public int getIndexCacheSize()
      Get the indexCacheSize
      Returns:
      the indexCacheSize
    • setIndexCacheSize

      public void setIndexCacheSize(int indexCacheSize)
      Set the indexCacheSize When set using Xbean, values of the form "20 Mb", "1024kb", and "1g" can be used
      Parameters:
      indexCacheSize - the indexCacheSize to set
    • isIgnoreMissingJournalfiles

      public boolean isIgnoreMissingJournalfiles()
      Get the ignoreMissingJournalfiles
      Returns:
      the ignoreMissingJournalfiles
    • setIgnoreMissingJournalfiles

      public void setIgnoreMissingJournalfiles(boolean ignoreMissingJournalfiles)
      Set the ignoreMissingJournalfiles
      Parameters:
      ignoreMissingJournalfiles - the ignoreMissingJournalfiles to set
    • isChecksumJournalFiles

      public boolean isChecksumJournalFiles()
    • isCheckForCorruptJournalFiles

      public boolean isCheckForCorruptJournalFiles()
    • setChecksumJournalFiles

      public void setChecksumJournalFiles(boolean checksumJournalFiles)
    • setCheckForCorruptJournalFiles

      public void setCheckForCorruptJournalFiles(boolean checkForCorruptJournalFiles)
    • getPurgeRecoveredXATransactionStrategy

      public String getPurgeRecoveredXATransactionStrategy()
    • setPurgeRecoveredXATransactionStrategy

      public void setPurgeRecoveredXATransactionStrategy(String purgeRecoveredXATransactionStrategy)
    • setBrokerService

      public void setBrokerService(BrokerService brokerService)
      Specified by:
      setBrokerService in interface BrokerServiceAware
      Overrides:
      setBrokerService in class LockableServiceSupport
    • getPreallocationScope

      public String getPreallocationScope()
    • setPreallocationScope

      public void setPreallocationScope(String preallocationScope)
    • getPreallocationStrategy

      public String getPreallocationStrategy()
    • setPreallocationStrategy

      public void setPreallocationStrategy(String preallocationStrategy)
    • isArchiveDataLogs

      public boolean isArchiveDataLogs()
    • setArchiveDataLogs

      public void setArchiveDataLogs(boolean archiveDataLogs)
    • getDirectoryArchive

      public File getDirectoryArchive()
    • setDirectoryArchive

      public void setDirectoryArchive(File directoryArchive)
    • isConcurrentStoreAndDispatchQueues

      public boolean isConcurrentStoreAndDispatchQueues()
    • setConcurrentStoreAndDispatchQueues

      public void setConcurrentStoreAndDispatchQueues(boolean concurrentStoreAndDispatch)
    • isConcurrentStoreAndDispatchTopics

      public boolean isConcurrentStoreAndDispatchTopics()
    • setConcurrentStoreAndDispatchTopics

      public void setConcurrentStoreAndDispatchTopics(boolean concurrentStoreAndDispatch)
    • getMaxAsyncJobs

      public int getMaxAsyncJobs()
    • setMaxAsyncJobs

      public void setMaxAsyncJobs(int maxAsyncJobs)
      Parameters:
      maxAsyncJobs - the maxAsyncJobs to set
    • setDatabaseLockedWaitDelay

      @Deprecated public void setDatabaseLockedWaitDelay(int databaseLockedWaitDelay) throws IOException
      Parameters:
      databaseLockedWaitDelay - the databaseLockedWaitDelay to set
      Throws:
      IOException
    • getForceRecoverIndex

      public boolean getForceRecoverIndex()
    • setForceRecoverIndex

      public void setForceRecoverIndex(boolean forceRecoverIndex)
    • isArchiveCorruptedIndex

      public boolean isArchiveCorruptedIndex()
    • setArchiveCorruptedIndex

      public void setArchiveCorruptedIndex(boolean archiveCorruptedIndex)
    • getIndexLFUEvictionFactor

      public float getIndexLFUEvictionFactor()
    • setIndexLFUEvictionFactor

      public void setIndexLFUEvictionFactor(float indexLFUEvictionFactor)
    • isUseIndexLFRUEviction

      public boolean isUseIndexLFRUEviction()
    • setUseIndexLFRUEviction

      public void setUseIndexLFRUEviction(boolean useIndexLFRUEviction)
    • setEnableIndexDiskSyncs

      public void setEnableIndexDiskSyncs(boolean diskSyncs)
    • isEnableIndexDiskSyncs

      public boolean isEnableIndexDiskSyncs()
    • setEnableIndexRecoveryFile

      public void setEnableIndexRecoveryFile(boolean enable)
    • isEnableIndexRecoveryFile

      public boolean isEnableIndexRecoveryFile()
    • setEnableIndexPageCaching

      public void setEnableIndexPageCaching(boolean enable)
    • isEnableIndexPageCaching

      public boolean isEnableIndexPageCaching()
    • getCompactAcksAfterNoGC

      public int getCompactAcksAfterNoGC()
    • setCompactAcksAfterNoGC

      public void setCompactAcksAfterNoGC(int compactAcksAfterNoGC)
      Sets the number of GC cycles where no journal logs were removed before an attempt to move forward all the acks in the last log that contains them and is otherwise unreferenced.

      A value of -1 will disable this feature.

      Parameters:
      compactAcksAfterNoGC - Number of empty GC cycles before we rewrite old ACKS.
    • isCompactAcksIgnoresStoreGrowth

      public boolean isCompactAcksIgnoresStoreGrowth()
    • setCompactAcksIgnoresStoreGrowth

      public void setCompactAcksIgnoresStoreGrowth(boolean compactAcksIgnoresStoreGrowth)
      Configure if Ack compaction will occur regardless of continued growth of the journal logs meaning that the store has not run out of space yet. Because the compaction operation can be costly this value is defaulted to off and the Ack compaction is only done when it seems that the store cannot grow and larger.
      Parameters:
      compactAcksIgnoresStoreGrowth - the compactAcksIgnoresStoreGrowth to set
    • isEnableAckCompaction

      public boolean isEnableAckCompaction()
      Returns whether Ack compaction is enabled
      Returns:
      enableAckCompaction
    • setEnableAckCompaction

      public void setEnableAckCompaction(boolean enableAckCompaction)
      Configure if the Ack compaction task should be enabled to run
      Parameters:
      enableAckCompaction -
    • isEnableSubscriptionStatistics

      public boolean isEnableSubscriptionStatistics()
      Whether non-blocking subscription statistics have been enabled
      Returns:
    • setEnableSubscriptionStatistics

      public void setEnableSubscriptionStatistics(boolean enableSubscriptionStatistics)
      Enable caching statistics for each subscription to allow non-blocking retrieval of metrics. This could incur some overhead to compute if there are a lot of subscriptions.
      Parameters:
      enableSubscriptionStatistics -
    • getStore

      public KahaDBStore getStore()
    • createTransactionInfo

      public KahaTransactionInfo createTransactionInfo(org.apache.activemq.command.TransactionId txid)
    • createDefaultLocker

      public Locker createDefaultLocker() throws IOException
      Specified by:
      createDefaultLocker in interface Lockable
      Throws:
      IOException
    • init

      public void init() throws Exception
      Specified by:
      init in class LockableServiceSupport
      Throws:
      Exception
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • setTransactionIdTransformer

      public void setTransactionIdTransformer(TransactionIdTransformer transactionIdTransformer)
      Specified by:
      setTransactionIdTransformer in interface TransactionIdTransformerAware
    • createJobSchedulerStore

      public JobSchedulerStore createJobSchedulerStore() throws IOException, UnsupportedOperationException
      Specified by:
      createJobSchedulerStore in interface PersistenceAdapter
      Throws:
      IOException
      UnsupportedOperationException
    • isPersistNoLocal

      public boolean isPersistNoLocal()
      Specified by:
      isPersistNoLocal in interface NoLocalSubscriptionAware
    • setCleanupOnStop

      public void setCleanupOnStop(boolean cleanupOnStop)
    • getCleanupOnStop

      public boolean getCleanupOnStop()