'When using MessageListenerContainer, MDC not propagate on receiving message
We can receive messages by configuring a MessageListenerContainer and providing a message listener or by using the @KafkaListener annotation.
When I use @KafkaListener, if a message comes, traceId goes to MDC automatically. this scenario is Ok. But when I use ConcurrentMessageListenerContainer, traceId not recognized from the received message, so the application creates new traceId!
My Code:
Scenario 1: ConcurrentMessageListenerContainer
@Bean
public ConcurrentMessageListenerContainer messageListenerContainer(ConsumerFactory consumerFactory) {
ContainerProperties containerProperties = getContainerProperties();
containerProperties.setMessageListener((MessageListener<String, MyMessage>) this::getMessage);
ConcurrentMessageListenerContainer messageListenerContainer = new ConcurrentMessageListenerContainer(consumerFactory, containerProperties);
return messageListenerContainer;
}
Scenario 2: @KafkaListener
@KafkaListener(
topics = "some_topic",
groupId = "some_group",
containerFactory = "ConcurrentKafkaListenerContainerFactory"
)
public void getMessage(ConsumerRecord<String, MyMessage> record){
//doSth
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
