|
对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.9! |
容器线程命名
一个TaskExecutor用于调用消费者和侦听器。
您可以通过将consumerExecutor容器的ContainerProperties.
使用池执行器时,请确保有足够的线程可用于处理使用它们的所有容器的并发性。
使用ConcurrentMessageListenerContainer,执行器中的线程用于每个使用者(concurrency).
如果您不提供消费者执行程序,则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等等,在停止和随后启动之后。
从版本开始3.0.1,您现在可以更改线程的名称,无论使用哪个执行器。
将AbstractMessageListenerContainer.changeConsumerThreadName属性设置为true和AbstractMessageListenerContainer.threadNameSupplier将被调用以获取线程名称。
这是一个Function<MessageListenerContainer, String>,默认实现返回container.getListenerId().