Скопируйте карту контекста MDC в рабочие потоки SimpleAsyncTaskExecutor - PullRequest
0 голосов
/ 29 октября 2018

Мы используем модули spring-core 4.1.X и версии spring-batch-core 3.0.X для приложения с загрузочной пружиной. Мы используем SimpleAsyncTaskExecutor для асинхронной обработки потоков. Мне нужно скопировать информацию MDC из родительского в дочерний поток. Я видел использование ThreadDecorators как лучший способ добиться этого. Но, они не доступны в версии весны, которую мы используем. Любые предложения по эквивалентным подходам с весенними версиями, которые мы используем. Если мы не можем добиться с помощью TaskDecorators, какие-либо предложения о том, что является другим лучшим способом ??

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, что вы имеете в виду использование TaskDecorator , который был добавлен в Spring 4.3 в качестве средства для создания пользовательского декоратора MDC и регистрации его в TaskExecutor, процесс, который хорошо описан в этой статье .

На самом деле это отличная идея, тем более что SimpleAsyncTaskExecutor также был обновлен весной 4.3 для поддержки TaskDecorator s.

Если вы не можете модернизировать (что является рекомендуемым подходом), я не думаю, что особенно сложно расширить SimpleAsyncTaskExecutor , чтобы предложить аналогичный хук, если вы видите, что на самом деле происходит под капотом .

Вот оригинальный коммит в версии 4.3 для SimpleAsyncTaskExecutor для поддержки TaskDecorator's

...