Package org.springframework.scheduling.config

# Class TaskSchedulerRouter

java.lang.Object
org.springframework.scheduling.config.TaskSchedulerRouter

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanFactoryAware`, `org.springframework.beans.factory.BeanNameAware`, `org.springframework.beans.factory.DisposableBean`, `TaskScheduler`

public class TaskSchedulerRouter extends Object implements TaskScheduler, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean
A routing implementation of the `TaskScheduler` interface, delegating to a target scheduler based on an identified qualifier or using a default scheduler otherwise.

Since:
  6.1
Author:
  Juergen Hoeller
See Also:
  - `SchedulingAwareRunnable.getQualifier()`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`DEFAULT_TASK_SCHEDULER_BEAN_NAME`
The default name of the `TaskScheduler` bean to pick up: "taskScheduler".
`protected static final org.apache.commons.logging.Log`
`logger`

## Constructor Summary

Constructors
Constructor
Description
`TaskSchedulerRouter()`

## Method Summary

Modifier and Type
Method
Description
`void`
`destroy()`
Destroy the local default executor, if any.
`protected TaskScheduler`
`determineDefaultScheduler()`
`protected TaskScheduler`
`determineQualifiedScheduler(String qualifier)`
`protected String`
`determineQualifier(Runnable task)`
`protected TaskScheduler`
`determineTargetScheduler(Runnable task)`
`ScheduledFuture<?>`
`schedule(Runnable task, Instant startTime)`
Schedule the given `Runnable`, invoking it at the specified execution time.
`ScheduledFuture<?>`
`schedule(Runnable task, Trigger trigger)`
Schedule the given `Runnable`, invoking it whenever the trigger indicates a next execution time.
`ScheduledFuture<?>`
`scheduleAtFixedRate(Runnable task, Duration period)`
Schedule the given `Runnable`, starting as soon as possible and invoking it with the given period.
`ScheduledFuture<?>`
`scheduleAtFixedRate(Runnable task, Instant startTime, Duration period)`
Schedule the given `Runnable`, invoking it at the specified execution time and subsequently with the given period.
`ScheduledFuture<?>`
`scheduleWithFixedDelay(Runnable task, Duration delay)`
Schedule the given `Runnable`, starting as soon as possible and invoking it with the given delay between the completion of one execution and the start of the next.
`ScheduledFuture<?>`
`scheduleWithFixedDelay(Runnable task, Instant startTime, Duration delay)`
Schedule the given `Runnable`, invoking it at the specified execution time and subsequently with the given delay between the completion of one execution and the start of the next.
`void`
`setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)`
The bean factory for scheduler lookups.
`void`
`setBeanName(String name)`
The bean name for this router, or the bean name of the containing bean if the router instance is internally held.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.scheduling.TaskScheduler

`getClock, schedule, scheduleAtFixedRate, scheduleAtFixedRate, scheduleWithFixedDelay, scheduleWithFixedDelay`

## Field Details

### DEFAULT_TASK_SCHEDULER_BEAN_NAME

public static final String DEFAULT_TASK_SCHEDULER_BEAN_NAME
The default name of the `TaskScheduler` bean to pick up: "taskScheduler".

Note that the initial lookup happens by type; this is just the fallback in case of multiple scheduler beans found in the context.

See Also:
  - Constant Field Values

### logger

protected static final org.apache.commons.logging.Log logger

## Constructor Details

### TaskSchedulerRouter

public TaskSchedulerRouter()

## Method Details

### setBeanName

public void setBeanName(@Nullable String name)
The bean name for this router, or the bean name of the containing bean if the router instance is internally held.

Specified by:
  `setBeanName` in interface `org.springframework.beans.factory.BeanNameAware`

### setBeanFactory

public void setBeanFactory(@Nullable org.springframework.beans.factory.BeanFactory beanFactory)
The bean factory for scheduler lookups.

Specified by:
  `setBeanFactory` in interface `org.springframework.beans.factory.BeanFactoryAware`

### schedule

@Nullable public ScheduledFuture<?> schedule(Runnable task, Trigger trigger)
Description copied from interface: `TaskScheduler`
Schedule the given `Runnable`, invoking it whenever the trigger indicates a next execution time.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

Specified by:
  `schedule` in interface `TaskScheduler`
Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `trigger` - an implementation of the `Trigger` interface, for example, a `CronTrigger` object wrapping a cron expression
Returns:
  a `ScheduledFuture` representing pending execution of the task, or `null` if the given Trigger object never fires (i.e. returns `null` from `Trigger.nextExecution(org.springframework.scheduling.TriggerContext)`)
See Also:
  - `CronTrigger`

### schedule

public ScheduledFuture<?> schedule(Runnable task, Instant startTime)
Description copied from interface: `TaskScheduler`
Schedule the given `Runnable`, invoking it at the specified execution time.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

Specified by:
  `schedule` in interface `TaskScheduler`
Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `startTime` - the desired execution time for the task (if this is in the past, the task will be executed immediately, i.e. as soon as possible)
Returns:
  a `ScheduledFuture` representing pending execution of the task

### scheduleAtFixedRate

public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Instant startTime, Duration period)
Description copied from interface: `TaskScheduler`
Schedule the given `Runnable`, invoking it at the specified execution time and subsequently with the given period.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

Specified by:
  `scheduleAtFixedRate` in interface `TaskScheduler`
Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `startTime` - the desired first execution time for the task (if this is in the past, the task will be executed immediately, i.e. as soon as possible)
  `period` - the interval between successive executions of the task
Returns:
  a `ScheduledFuture` representing pending execution of the task

### scheduleAtFixedRate

public ScheduledFuture<?> scheduleAtFixedRate(Runnable task, Duration period)
Description copied from interface: `TaskScheduler`
Schedule the given `Runnable`, starting as soon as possible and invoking it with the given period.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

Specified by:
  `scheduleAtFixedRate` in interface `TaskScheduler`
Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `period` - the interval between successive executions of the task
Returns:
  a `ScheduledFuture` representing pending execution of the task

### scheduleWithFixedDelay

public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Instant startTime, Duration delay)
Description copied from interface: `TaskScheduler`
Schedule the given `Runnable`, invoking it at the specified execution time and subsequently with the given delay between the completion of one execution and the start of the next.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

Specified by:
  `scheduleWithFixedDelay` in interface `TaskScheduler`
Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `startTime` - the desired first execution time for the task (if this is in the past, the task will be executed immediately, i.e. as soon as possible)
  `delay` - the delay between the completion of one execution and the start of the next
Returns:
  a `ScheduledFuture` representing pending execution of the task

### scheduleWithFixedDelay

public ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Duration delay)
Description copied from interface: `TaskScheduler`
Schedule the given `Runnable`, starting as soon as possible and invoking it with the given delay between the completion of one execution and the start of the next.

Execution will end once the scheduler shuts down or the returned `ScheduledFuture` gets cancelled.

Specified by:
  `scheduleWithFixedDelay` in interface `TaskScheduler`
Parameters:
  `task` - the Runnable to execute whenever the trigger fires
  `delay` - the delay between the completion of one execution and the start of the next
Returns:
  a `ScheduledFuture` representing pending execution of the task

### determineTargetScheduler

protected TaskScheduler determineTargetScheduler(Runnable task)

### determineQualifier

@Nullable protected String determineQualifier(Runnable task)

### determineQualifiedScheduler

protected TaskScheduler determineQualifiedScheduler(String qualifier)

### determineDefaultScheduler

protected TaskScheduler determineDefaultScheduler()

### destroy

public void destroy()
Destroy the local default executor, if any.

Specified by:
  `destroy` in interface `org.springframework.beans.factory.DisposableBean`