Журнал регистрации: доступность MDC в вилках, созданных внутри StructuredTaskScope.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Журнал регистрации: доступность MDC в вилках, созданных внутри StructuredTaskScope.

Сообщение Anonymous »

При использовании StructuredTaskScope из JEP 453 в Java 21+ и разветвлении нескольких задач я бы хотел, чтобы значения MDC распространялись на развилки, чтобы все журналы были правильно коррелированы.
Расширяя пример из JEP, я бы хотел, чтобы все три журнала содержали одинаковые значения MDC:

Код: Выделить всё

Response handle() throws ExecutionException, InterruptedException {
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
// TODO: set MDC "somehow"

Supplier  user  = scope.fork(() -> logger.info("1"));
Supplier order = scope.fork(() -> logger.info("2"));

scope.join().throwIfFailed();

logger.info("3");
return new Response(user.get(), order.get());
}
}
Проблема в том, что MDC не наследуются, что может быть меньшей проблемой в Java до виртуальных потоков. Однако теперь, когда создание новых потоков является дешевым и поощряется, наследование MDC может быть гораздо более полезным и распространенным.
Мои первоначальные попытки решить эту проблему были сосредоточены на использовании ScopedValue (JEP 429). В отличие от ThreadLocal, такие значения наследуются ветвями области видимости, поэтому они кажутся хорошими кандидатами для хранения маркеров MDC.
Чтобы реализовать это, мне пришлось бы либо напрямую обратиться к a ScopedValue из компонентов журналирования Logback (возможно ли это?) или для управления MDC. Я попытался перезаписать MDCAdapter, но это не удалось (похоже, что Logback не использует, например, MDCAdapter.get для фактического чтения значения MDC).

Подробнее здесь: https://stackoverflow.com/questions/781 ... dtaskscope
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как распространять контекст через StructuredTaskScope с помощью ScopedValue, кстати, как насчет MDC ThreadContextMap в S
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Является ли обработка исключений обязательной в MDC.remove() или MDC.put()?
    Гость » » в форуме JAVA
    0 Ответы
    46 Просмотры
    Последнее сообщение Гость
  • Можно ли отменить раздвоенную подзадачу в StructuredTaskScope?
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Java 21 Создание StructuredTaskScope из ExecutorService
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как запустить structuredTaskScope.timeOutexception на Java 25
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»