JLupin disk queue implementation

IMPORTANT: All instances of queue microservice must share same disk space for storage (shared disk is required).

To use disk queue implementation configure your queues.yml configuration file with storage class name as shown below:

[...]
    storageClassName: 'com.jlupin.impl.microservice.partofjlupin.asynchronous.storage.queue.impl.disk.JLupinDiskQueueStorageImpl'
[...]

Remember to set up your storage configuration in storage.yml file:

STORAGE:
  #absoluteRootPath: 'c:\\storage'
  maxTasksAmountInSingleDirectory: 100
  howOftenCheckingSubdirectoryInMillis: 5000
  howOftenGenerateHealthCheckFileInMillis: 10000
  takeControlOfAnotherQueueInMillis: 60000
  howLongWaitToTakeControlOfOwnStorage: 60000
  howOftenCheckAnotherHealthCheckFileInMillis: 10000
  maxTimeToHoldNonUseDirectoriesInMilliseconds: 86400000

Description:

Parameter Description
#absoluteRootPath Path to root location for storing queues. By default it is platform/storage directory.
maxTasksAmountInSingleDirectory Maximum amount of tasks stored in a single directory.
howOftenCheckingSubdirectoryInMillis Time period (expressed in milliseconds) at which subdirectories will be checked for new tasks and switched.
howOftenGenerateHealthCheckFileInMillis Time period (expressed in milliseconds) at which queue will update it's healt check status.
takeControlOfAnotherQueueInMillis Minimum time (expressed in milliseconds) required to pass before taking controler over another queue which is not alive.
howLongWaitToTakeControlOfOwnStorage Time period (expressed in milliseconds) which queue will wait after setting it is alive before it will start processing it's own tasks.
howOftenCheckAnotherHealthCheckFileInMillis Time period (expressed in milliseconds) at which queue will check if other queues are alive.
maxTimeToHoldNonUseDirectoriesInMilliseconds Maximum alive time (expressed in milliseconds) for unused directories.