All Downloads are FREE. Search and download functionalities are using the official Maven repository.

brainslug.flow.execution.async.ExecutorServiceAsyncTriggerScheduler Maven / Gradle / Ivy

The newest version!
package brainslug.flow.execution.async;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.concurrent.*;

public class ExecutorServiceAsyncTriggerScheduler extends AbstractAsyncTriggerScheduler {

  private Logger log = LoggerFactory.getLogger(ExecutorServiceAsyncTriggerScheduler.class);

  ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
  ExecutorService taskExecutorService = Executors.newCachedThreadPool();

  AsyncTriggerExecutor asyncTriggerExecutor = new AsyncTriggerExecutor();

  @Override
  protected void internalStart() {
    log.info("starting async job scheduling with options: " + options);

    Runnable executeTasksRunnable = new Runnable() {
      @Override
      public void run() {
        FutureTask>> executeTasks =
          new FutureTask>>(new ExecuteTasksCallable(context, asyncTriggerStore, options, taskExecutorService, asyncTriggerExecutor));
        executeTasks.run();
      }
    };

    scheduledExecutorService.scheduleAtFixedRate(executeTasksRunnable,
      options.getScheduleDelay(),
      options.getSchedulePeriod(),
      options.getScheduleUnit()
    );
  }

  public ScheduledExecutorService getScheduledExecutorService() {
    return scheduledExecutorService;
  }

  public ExecutorServiceAsyncTriggerScheduler withScheduledExecutorService(ScheduledExecutorService executorService) {
    this.scheduledExecutorService = executorService;
    return this;
  }

  public ExecutorService getTaskExecutorService() {
    return taskExecutorService;
  }

  public ExecutorServiceAsyncTriggerScheduler withTaskExecutorService(ExecutorService taskExecutor) {
    this.taskExecutorService = taskExecutor;
    return this;
  }

  public AsyncTriggerExecutor getAsyncTriggerExecutor() {
    return asyncTriggerExecutor;
  }

  public ExecutorServiceAsyncTriggerScheduler withAsyncTriggerExecutor(AsyncTriggerExecutor asyncTriggerExecutor) {
    this.asyncTriggerExecutor = asyncTriggerExecutor;
    return this;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy