此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.9spring-doc.cadn.net.cn

容器线程命名

一个TaskExecutor用于调用消费者和侦听器。 您可以通过将consumerExecutor容器的ContainerProperties. 使用池执行器时,请确保有足够的线程可用于处理使用它们的所有容器的并发性。 使用ConcurrentMessageListenerContainer,执行器中的线程用于每个使用者(concurrency).spring-doc.cadn.net.cn

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

从版本开始3.0.1,您现在可以更改线程的名称,无论使用哪个执行器。 将AbstractMessageListenerContainer.changeConsumerThreadName属性设置为trueAbstractMessageListenerContainer.threadNameSupplier将被调用以获取线程名称。 这是一个Function<MessageListenerContainer, String>,默认实现返回container.getListenerId().spring-doc.cadn.net.cn