Class RetrySynchronizationManager

java.lang.Object
org.springframework.retry.support.RetrySynchronizationManager

public final class RetrySynchronizationManager extends Object
Global variable support for retry clients. Normally it is not necessary for clients to be aware of the surrounding environment because a RetryCallback can always use the context it is passed by the enclosing RetryOperations. But occasionally it might be helpful to have lower level access to the ongoing RetryContext so we provide a global accessor here. The mutator methods (clear() and register(RetryContext) should not be used except internally by RetryOperations implementations.
Author:
Dave Syer, Gary Russell
  • Method Details

    • setUseThreadLocal

      public static void setUseThreadLocal(boolean use)
      Set to false to store the context in a map (keyed by the current thread) instead of in a ThreadLocal. Recommended when using virtual threads.
      Parameters:
      use - true to use a ThreadLocal (default true).
      Since:
      2.0.3
    • isUseThreadLocal

      public static boolean isUseThreadLocal()
      Return true if contexts are held in a ThreadLocal (default) rather than a Map.
      Returns:
      the useThreadLocal
      Since:
      2.0.3
    • getContext

      @Nullable public static RetryContext getContext()
      Public accessor for the locally enclosing RetryContext.
      Returns:
      the current retry context, or null if there isn't one
    • register

      @Nullable public static RetryContext register(RetryContext context)
      Method for registering a context - should only be used by RetryOperations implementations to ensure that getContext() always returns the correct value.
      Parameters:
      context - the new context to register
      Returns:
      the old context if there was one
    • clear

      @Nullable public static RetryContext clear()
      Clear the current context at the end of a batch - should only be used by RetryOperations implementations.
      Returns:
      the old value if there was one.