Class FileIdempotentRepositoryReadLockStrategy

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.CamelContextAware, GenericFileExclusiveReadLockStrategy<File>, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.StatefulService, org.apache.camel.SuspendableService

    public class FileIdempotentRepositoryReadLockStrategy
    extends org.apache.camel.support.service.ServiceSupport
    implements GenericFileExclusiveReadLockStrategy<File>, org.apache.camel.CamelContextAware
    A file read lock that uses an IdempotentRepository as the lock strategy. This allows to plugin and use existing idempotent repositories that for example supports clustering. The other read lock strategies that are using marker files or file locks, are not guaranteed to work in clustered setup with various platform and file systems.
    • Constructor Detail

      • FileIdempotentRepositoryReadLockStrategy

        public FileIdempotentRepositoryReadLockStrategy()
    • Method Detail

      • setCheckInterval

        public void setCheckInterval​(long checkInterval)
        Description copied from interface: GenericFileExclusiveReadLockStrategy
        Sets the check interval period.

        The check interval is used for sleeping between attempts to acquire read lock. Setting a high value allows to cater for slow writes in case the producer of the file is slow.

        The default period is 1000 millis.

        Specified by:
        setCheckInterval in interface GenericFileExclusiveReadLockStrategy<File>
        Parameters:
        checkInterval - interval in millis
      • getCamelContext

        public org.apache.camel.CamelContext getCamelContext()
        Specified by:
        getCamelContext in interface org.apache.camel.CamelContextAware
      • setCamelContext

        public void setCamelContext​(org.apache.camel.CamelContext camelContext)
        Specified by:
        setCamelContext in interface org.apache.camel.CamelContextAware
      • getIdempotentRepository

        public org.apache.camel.spi.IdempotentRepository getIdempotentRepository()
        The idempotent repository to use as the store for the read locks.
      • setIdempotentRepository

        public void setIdempotentRepository​(org.apache.camel.spi.IdempotentRepository idempotentRepository)
        The idempotent repository to use as the store for the read locks.
      • isRemoveOnRollback

        public boolean isRemoveOnRollback()
        Whether to remove the file from the idempotent repository when doing a rollback.

        By default this is true.

      • setRemoveOnRollback

        public void setRemoveOnRollback​(boolean removeOnRollback)
        Whether to remove the file from the idempotent repository when doing a rollback.

        By default this is true.

      • isRemoveOnCommit

        public boolean isRemoveOnCommit()
        Whether to remove the file from the idempotent repository when doing a commit.

        By default this is false.

      • setRemoveOnCommit

        public void setRemoveOnCommit​(boolean removeOnCommit)
        Whether to remove the file from the idempotent repository when doing a commit.

        By default this is false.

      • getReadLockIdempotentReleaseDelay

        public int getReadLockIdempotentReleaseDelay()
      • setReadLockIdempotentReleaseDelay

        public void setReadLockIdempotentReleaseDelay​(int readLockIdempotentReleaseDelay)
        Whether to delay the release task for a period of millis.
      • isReadLockIdempotentReleaseAsync

        public boolean isReadLockIdempotentReleaseAsync()
      • setReadLockIdempotentReleaseAsync

        public void setReadLockIdempotentReleaseAsync​(boolean readLockIdempotentReleaseAsync)
        Whether the delayed release task should be synchronous or asynchronous.
      • getReadLockIdempotentReleaseAsyncPoolSize

        public int getReadLockIdempotentReleaseAsyncPoolSize()
      • setReadLockIdempotentReleaseAsyncPoolSize

        public void setReadLockIdempotentReleaseAsyncPoolSize​(int readLockIdempotentReleaseAsyncPoolSize)
        The number of threads in the scheduled thread pool when using asynchronous release tasks.
      • getReadLockIdempotentReleaseExecutorService

        public ScheduledExecutorService getReadLockIdempotentReleaseExecutorService()
      • setReadLockIdempotentReleaseExecutorService

        public void setReadLockIdempotentReleaseExecutorService​(ScheduledExecutorService readLockIdempotentReleaseExecutorService)
        To use a custom and shared thread pool for asynchronous release tasks.
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.apache.camel.support.service.BaseService
        Throws:
        Exception