Получение нулевого значения TransportContext в WorkManagerTaskExecutor

Я пытаюсь получить TransportContext

(из TransportContextHolder.getTransportContext();)

Который может получить контекст, соединение и HttpServletRequest в обычном потоке.

Но у меня есть сценарий, где я создаю параллельный вызов с использованием Spring WorkManagerTaskExecutor). В новом потоке я пытаюсь получить Spring TransportContext, который возвращает null.

Может кто-нибудь помочь, как получить TransportContext в концепции WorkManagerTaskExecutor.

1 ответ

Вы не можете передать Транспортный контекст в задачу, которую вы выполняете с помощью WorkManagerTaskExecutor.

executor.execute(new Task(TransportContextHolder.getTransportContext()){
   //here constructor and property to store context
});

Но это не очень хороший подход. Данные, полученные из транспортного контекста в другом потоке, могут быть недействительными, и вы не должны выполнять никаких операций отправки. Если вам нужна транспортная информация во время выполнения задачи, просто прочитайте ее в исходном потоке и перейдите к задаче, как описано выше. Отправка данных из другого потока не может работать правильно.

Другие вопросы по тегам