Class MdcContextExecutorService

java.lang.Object
java.util.concurrent.AbstractExecutorService
br.ufsc.labsec.utils.mdc.MdcContextExecutorService
All Implemented Interfaces:
Executor, ExecutorService

public class MdcContextExecutorService
extends AbstractExecutorService
Um ExecutorService que atua como um Decorator para propagar automaticamente o contexto MDC para as tarefas submetidas.

Ele envolve (como wrapper) qualquer Runnable ou Callable submetido com uma implementação que preserva o contexto, garantindo que os logs gerados dentro da tarefa assíncrona contenham as informações de diagnóstico (como requestId) da thread pai.

Esta implementação é simplificada e decora apenas os métodos mais comuns.

  • Constructor Details

    • MdcContextExecutorService

      public MdcContextExecutorService​(ExecutorService delegate)
      Constrói um novo MdcContextExecutorService.
      Parameters:
      delegate - O ExecutorService real para o qual as chamadas serão delegadas após o tratamento do contexto MDC.
  • Method Details

    • execute

      public void execute​(Runnable command)
      Executa o comando em algum momento no futuro, garantindo a propagação do contexto MDC.
      Parameters:
      command - o Runnable a ser executado.
    • submit

      public Future<?> submit​(Runnable task)
      Submete uma tarefa Runnable para execução e retorna um Future representando essa tarefa. O contexto MDC é propagado para a tarefa.
      Specified by:
      submit in interface ExecutorService
      Overrides:
      submit in class AbstractExecutorService
      Parameters:
      task - a tarefa a ser submetida.
      Returns:
      um Future representando a conclusão pendente da tarefa.
    • shutdown

      public void shutdown()
    • shutdownNow

      public List<Runnable> shutdownNow()
    • isShutdown

      public boolean isShutdown()
    • isTerminated

      public boolean isTerminated()
    • awaitTermination

      public boolean awaitTermination​(long timeout, TimeUnit unit) throws InterruptedException
      Throws:
      InterruptedException