Interface StreamCachingStrategy

All Superinterfaces:
AutoCloseable, Service, StaticService

public interface StreamCachingStrategy extends StaticService
Strategy for using stream caching.
  • Method Details

    • setEnabled

      void setEnabled(boolean enabled)
      Sets whether the stream caching is enabled.

      Notice: This cannot be changed at runtime.

    • isEnabled

      boolean isEnabled()
    • setAllowClasses

      void setAllowClasses(Class<?>... classes)
      To filter stream caching of a given set of allowed/denied classes. By default, all classes that are InputStream is allowed.
    • setAllowClasses

      void setAllowClasses(String names)
      To filter stream caching of a given set of allowed/denied classes. By default, all classes that are InputStream is allowed. Multiple class names can be separated by comma.
    • getAllowClasses

      Collection<Class<?>> getAllowClasses()
      To filter stream caching of a given set of allowed/denied classes. By default, all classes that are InputStream is allowed.
    • setDenyClasses

      void setDenyClasses(Class<?>... classes)
      To filter stream caching of a given set of allowed/denied classes. By default, all classes that are InputStream is allowed.
    • setDenyClasses

      void setDenyClasses(String names)
      To filter stream caching of a given set of allowed/denied classes. By default, all classes that are InputStream is allowed. Multiple class names can be separated by comma.
    • getDenyClasses

      Collection<Class<?>> getDenyClasses()
      To filter stream caching of a given set of allowed/denied classes. By default, all classes that are InputStream is allowed.
    • setSpoolEnabled

      void setSpoolEnabled(boolean spoolEnabled)
      Enables spooling to disk.

      Notice: This cannot be changed at runtime. Default is disabled.

    • isSpoolEnabled

      boolean isSpoolEnabled()
      Is spooling to disk enabled.
    • setSpoolDirectory

      void setSpoolDirectory(File path)
      Sets the spool (temporary) directory to use for overflow and spooling to disk.

      If no spool directory has been explicit configured, then a temporary directory is created in the java.io.tmpdir directory.

    • getSpoolDirectory

      File getSpoolDirectory()
    • setSpoolDirectory

      void setSpoolDirectory(String path)
    • setSpoolThreshold

      void setSpoolThreshold(long threshold)
      Threshold in bytes when overflow to disk is activated.

      The default threshold is StreamCache.DEFAULT_SPOOL_THRESHOLD bytes (eg 128kb). Use -1 to disable overflow to disk.

    • getSpoolThreshold

      long getSpoolThreshold()
    • setSpoolUsedHeapMemoryThreshold

      void setSpoolUsedHeapMemoryThreshold(int percentage)
      Sets a percentage (1-99) of used heap memory threshold to activate spooling to disk.
      Parameters:
      percentage - percentage of used heap memory.
    • getSpoolUsedHeapMemoryThreshold

      int getSpoolUsedHeapMemoryThreshold()
    • setSpoolUsedHeapMemoryLimit

      void setSpoolUsedHeapMemoryLimit(StreamCachingStrategy.SpoolUsedHeapMemoryLimit bounds)
      Sets what the upper bounds should be when setSpoolUsedHeapMemoryThreshold(int) is in use.
      Parameters:
      bounds - the bounds
    • getSpoolUsedHeapMemoryLimit

      StreamCachingStrategy.SpoolUsedHeapMemoryLimit getSpoolUsedHeapMemoryLimit()
    • setBufferSize

      void setBufferSize(int bufferSize)
      Sets the buffer size to use when allocating in-memory buffers used for in-memory stream caches.

      The default size is IOHelper.DEFAULT_BUFFER_SIZE

    • getBufferSize

      int getBufferSize()
    • setSpoolCipher

      void setSpoolCipher(String cipher)
      Sets a cipher name to use when spooling to disk to write with encryption.

      By default the data is not encrypted.

    • getSpoolCipher

      String getSpoolCipher()
    • setRemoveSpoolDirectoryWhenStopping

      void setRemoveSpoolDirectoryWhenStopping(boolean remove)
      Whether to remove the temporary directory when stopping.

      This option is default true

    • isRemoveSpoolDirectoryWhenStopping

      boolean isRemoveSpoolDirectoryWhenStopping()
    • setAnySpoolRules

      void setAnySpoolRules(boolean any)
      Sets whether if just any of the StreamCachingStrategy.SpoolRule rules returns true then shouldSpoolCache(long) returns true. If this option is false, then all the StreamCachingStrategy.SpoolRule must return true.

      The default value is false which means that all the rules must return true.

    • isAnySpoolRules

      boolean isAnySpoolRules()
    • getStatistics

      Gets the utilization statistics.
    • addSpoolRule

      void addSpoolRule(StreamCachingStrategy.SpoolRule rule)
      Adds the StreamCachingStrategy.SpoolRule rule to be used.
    • shouldSpoolCache

      boolean shouldSpoolCache(long length)
      Determines if the stream should be spooled or not. For example if the stream length is over a threshold.

      This allows implementations to use custom strategies to determine if spooling is needed or not.

      Parameters:
      length - the length of the stream
      Returns:
      true to spool the cache, or false to keep the cache in-memory
    • cache

      StreamCache cache(Exchange exchange)
      Caches the body aas a StreamCache.
      Parameters:
      exchange - the exchange
      Returns:
      the body cached as a StreamCache, or null if not possible or no need to cache the body
    • cache

      StreamCache cache(Message message)
      Caches the body aas a StreamCache.
      Parameters:
      message - the message
      Returns:
      the body cached as a StreamCache, or null if not possible or no need to cache the body