在基于并发创建线程时,我试图理解Spring Kafka Containter Factory线程命名约定。
我正在使用spring-kafka:1.2.1.RELEASE
版本,并且可以从文档中找到以下详细信息。
https://docs.spring.io/autorepo/docs/spring-kafka-dist/1.2.1.BUILD-SNAPSHOT/reference/htmlsingle/#_container_thread_naming
如果您不提供执行程序,则使用SimpleAsyncTaskExecutor; 这些执行程序创建名称为-C-n(消费者 线程)和-L-n(侦听器线程)。为了 ConcurrentMessageListenerContainer,线程的一部分 名称变为-m,其中m表示使用者实例。 ñ 每次启动容器时都会递增。因此,使用一个名为 容器,该容器中的线程将被命名为container-0-C-1和 容器启动后,容器-0-L-1,容器-1-C-1等 第一次。
在我的应用程序中,我看到在服务器启动期间正在创建线程eventListener-0-C-1
,eventListener-2-C-1
和eventListener-1-C-1
,但是,在使用Listener方法上的消息时,我看到的线程名称是eventListener-0-L-1
,eventListener-1-L-1
和eventListener-2-L-1
,这是不同的。我的应用程序上没有单独的执行程序,其使用ConcurrentKafkaListenerContainerFactory
作为初始配置的一部分。
感谢有人可以为此提供一些内部信息。谢谢。
答案 0 :(得分:1)
1 2.x不再受支持。升级到至少1.3.9。多亏了KIP-62,它的线程模型更为简单。最新版本是2.2.3,并且相对于1.x具有许多改进的功能。
使用旧的线程模型时,每个使用者有两个线程。一种轮询,一种调用侦听器。