'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