Я реализую уровень наблюдения в экосистеме Spring Boot 3.2.0, чтобы обеспечить распределенную трассировку между несколькими микросервисами.
У меня есть ContextInterceptor, который захватывает идентификатор корреляции из входящих HTTP-запросов и сохраняет его в ThreadLocal через оболочку RequestContext. Это прекрасно работает для синхронного потока.
Однако я пытаюсь использовать лучший метод распространения этого контекста при асинхронной отправке сообщений в Apache Kafka. Я хочу, чтобы корреляция-id вводилась в заголовки Kafka, не загрязняя мою бизнес-логику инфраструктурным кодом.
Каков стандартный подход к «обертыванию» Kafka Producer для автоматического включения этих заголовков из текущего контекста ThreadLocal?
public void sendWithContext(String payload) {
ProducerRecord record = new ProducerRecord("topic", payload);
Я реализую уровень наблюдения в экосистеме Spring Boot 3.2.0, чтобы обеспечить распределенную трассировку между несколькими микросервисами. У меня есть ContextInterceptor, который захватывает идентификатор корреляции из входящих HTTP-запросов и сохраняет его в ThreadLocal через оболочку RequestContext. Это прекрасно работает для синхронного потока. Однако я пытаюсь использовать лучший метод распространения этого контекста при асинхронной отправке сообщений в [b]Apache Kafka[/b]. Я хочу, чтобы корреляция-id вводилась в заголовки Kafka, не загрязняя мою бизнес-логику инфраструктурным кодом. Каков стандартный подход к «обертыванию» Kafka Producer для автоматического включения этих заголовков из текущего контекста ThreadLocal?
public void sendWithContext(String payload) { ProducerRecord record = new ProducerRecord("topic", payload);