У нас есть распределенное приложение, основанное на микросервисной архитектуре. В одном из наших микросервисов мы следуем шаблону производитель-потребитель.
Производитель получает запросы, сохраняет их в базе данных, помещает запрос в BlockingQueue и отправляет ответ обратно клиенту. Потребитель, работающий в отдельном потоке, прослушивает очередь блокировки. В тот момент, когда он получает объект запроса, он выполняет над ним определенные операции.
Запрос, полученный производителем, сохраняется в базе данных асинхронно с использованием CompleteableFutures.
Проблема здесь в том, как перенаправить TraceId в методы, обрабатывающие requestObject внутри потребительского потока. Поскольку поток-потребитель может обрабатывать эти объекты намного позже, после отправки ответа потребителю.
Также как перенаправить traceId через асинхронные вызовы?
Спасибо