¿CompletableFuture tiene un contexto local correspondiente?

En los viejos tiempos, teníamos ThreadLocal para que los programas transportaran datos junto con la ruta de la solicitud, ya que todo el procesamiento de la solicitud se realizó en ese hilo y cosas como el logback lo usaron con MDC.put ("requestId", getNewRequestId ());

Luego llegaron la escala y la programación funcional y aparecieron Futures y con ellos llegó Local.scala (al menos sé que los Twitter Futures tienen esta clase). Future.scala sabe acerca de Local.scala y transfiere el contexto a través de todas las funcionalidades de map / flatMap, etc., de modo que todavía puedo hacer Local.set ("requestId", getNewRequestId ()); y luego después de que haya viajado por muchos hilos, aún puedo acceder a él con Local.get (...)

Entonces, mi pregunta está en Java, ¿puedo hacer lo mismo con el nuevo CompletableFuture en algún lugar con LocalContext o algún objeto (no estoy seguro del nombre) y de esta manera, puedo modificar el contexto MDC de logback para almacenarlo en ese contexto en lugar de un ThreadLocal para que no pierda la identificación de la solicitud y todos mis registros a través de thenApply, thenAccept, etc. etc. todavía funcionan bien con el registro y el indicador -XrequestId en la configuración de inicio de sesión

EDITAR:

Como ejemplo. Si tiene una solicitud y está usando log4j o logback, en un filtro, establecerá MDC.put ("requestId", requestId) y luego en su aplicación, registrará muchas declaraciones de registro

log.info("request came in for url="+url);
log.info("request is complete");

Ahora, en la salida del registro mostrará

INFO {time}: requestId425 request came in for url=/mypath
INFO {time}: requestId425 request is complete

Esto está utilizando un truco de ThreadLocal para lograr esto. En twitter, usamos scala y twitter Futures en scala junto con una clase Local.scala. Local.scala y Future.scala están unidos, ya que podemos lograr el escenario anterior, que es muy agradable y todas nuestras declaraciones de registro pueden registrar la identificación de la solicitud para que el desarrollador nunca tenga que acordarse de registrar la identificación de la solicitud y pueda rastrear un solo cliente solicita un ciclo de respuesta con esa identificación.

No veo esto en Java :( lo cual es muy desafortunado ya que hay muchos casos de uso para eso. ¿Quizás hay algo que no estoy viendo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta