Spring Kafka线程命名约定

时间:2019-01-15 00:52:02

标签: spring-kafka

在基于并发创建线程时,我试图理解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-1eventListener-2-C-1eventListener-1-C-1,但是,在使用Listener方法上的消息时,我看到的线程名称是eventListener-0-L-1eventListener-1-L-1eventListener-2-L-1,这是不同的。我的应用程序上没有单独的执行程序,其使用ConcurrentKafkaListenerContainerFactory作为初始配置的一部分。

感谢有人可以为此提供一些内部信息。谢谢。

1 个答案:

答案 0 :(得分:1)

1 2.x不再受支持。升级到至少1.3.9。多亏了KIP-62,它的线程模型更为简单。最新版本是2.2.3,并且相对于1.x具有许多改进的功能。

使用旧的线程模型时,每个使用者有两个线程。一种轮询,一种调用侦听器。