【问题标题】:Spring Kafka and MDCSpring Kafka 和 MDC
【发布时间】:2018-05-25 10:28:07
【问题描述】:

我有一个 Kafka 消费者实现为:

@KafkaListener(topics="...", group-id="....")
public void doProcessing(@Payload String data, @Headers Map<String, Object> headers)
{
//read one of the headers and get a unique id pertaining for thread
//set that header value in MDC
String messageUniqueIdentifier=headers.get("myRequestIdentifierKey");
MDC.put("myRequestIdentifierKey",messageUniqueIdentifier)
log.info("logging just to see if the unique identifier comes in the logs or not);
//do some processing
}

这是一种安全的方法吗?是否总是保证同一个线程会 在消费者中服务一条消息?

【问题讨论】:

    标签: spring-kafka mdc


    【解决方案1】:

    不清楚你在问什么。如果您具有并发性,则将有多个线程,但每条消息将在一个线程上处理(只要您的侦听器不移交给另一个线程)。

    所以,只要你每次都在监听器中设置 MDC 并且不要移交给另一个线程;它会起作用的。

    如果您只有一个线程,则每条消息都将使用同一个线程(除非容器停止并重新启动,在这种情况下它将获得一个新线程)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多