对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.0spring-doc.cadn.net.cn

容器线程命名

一个TaskExecutor用于调用 Consumer 和 Listener。 您可以通过设置consumerExecutor容器的ContainerProperties. 使用池化执行程序时,请确保有足够的线程可用于处理使用它们的所有容器之间的并发。 使用ConcurrentMessageListenerContainer中,来自执行程序的线程将用于每个使用者 (concurrency).spring-doc.cadn.net.cn

如果您未提供使用者执行程序,则SimpleAsyncTaskExecutor用于每个容器。 此执行程序创建名称类似于<beanName>-C-<n>. 对于ConcurrentMessageListenerContainer<beanName>线程名称的一部分变为<beanName>-m哪里m表示 Consumer 实例。n每次启动容器时递增。 因此,使用 bean 名称container,此容器中的线程将被命名为container-0-C-1,container-1-C-1等,在容器首次启动后;container-0-C-2,container-1-C-2等,在 stop 和随后的 start 之后。spring-doc.cadn.net.cn

从 version 开始3.0.1,您现在可以更改线程的名称,而不管使用哪个执行程序。 将AbstractMessageListenerContainer.changeConsumerThreadNameproperty 设置为trueAbstractMessageListenerContainer.threadNameSupplier将调用以获取线程名称。 这是一个Function<MessageListenerContainer, String>,默认实现返回container.getListenerId().spring-doc.cadn.net.cn