Class AbortableTaskDecorator

  • All Implemented Interfaces:
    org.springframework.core.task.TaskDecorator

    public class AbortableTaskDecorator
    extends Object
    implements org.springframework.core.task.TaskDecorator
    Task decorator to copy the MDC from the calling thread to the executing thread..
    Since:
    2.0.0
    Author:
    Rutger Lubbers, Paul Klos
    • Constructor Detail

      • AbortableTaskDecorator

        public AbortableTaskDecorator​(org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor taskExecutor,
                                      ScheduledThreadPoolExecutor timeoutExecutor)
        Construct an instance.
    • Method Detail

      • decorate

        public Runnable decorate​(Runnable runnable)

        We create a new AbortableTaskRunnable that holds the current thread's MDC. This is for logging purposes, so that logging within the runnable is done with the correct logging context. For instance, the transaction id is logged and the current user etc.

        Next to this, we create an schedule a TimeoutGuardTask. This task will stop the runnable we're decorating if the configured timeout has lapsed.

        The AbortableTaskRunnable will stop the execution of the TimeoutGuardTask after it completes.

        Specified by:
        decorate in interface org.springframework.core.task.TaskDecorator