此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 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()
.