多个 kafka 生产者线程得到 spawn

问题描述 投票:0回答:1

我是卡夫卡的新手。我有两个卡夫卡经纪人,我正试图通过这两个经纪人推送数据。一个是主要的,另一个是备用的。

我正在做一个小分析,我正在通过线程池执行器将数据推送到 kafka 队列。这样做时,我将最大池大小保持为 1,将数组阻塞队列的大小保持为 2。我通过 Jmeter 触发了 10 个请求,其中 7 个请求进入了拒绝处理程序(如预期的那样),3 个进入了 kafka 队列处理。

使用线程转储来分析 kafka 线程的状态,为 kafka 生产者启动了 4 个生产者线程。

我无法理解这一点,因为我正在使用两个代理,这里有 3 条消息正在通过 kafka 处理(2 条在阻塞队列中,1 条在线程中),那么 4 个生产者线程是如何启动的?

PS:出于安全考虑,我不能在这里分享代码片段。

java multithreading apache-kafka kafka-producer-api
1个回答
0
投票

我无法理解这一点,因为我正在使用两个代理,这里有 3 条消息正在通过 kafka 处理(2 条在阻塞队列中,1 条在线程中),那么 4 个生产者线程是如何启动的?

我的总体感觉是您不必担心 Kafka API 使用了多少线程。线程相对便宜,Kafka 代码只是试图提高其通信效率。如果您有一个 Kafka Producer 对象,那么我很惊讶有 4 个线程,但它可能与每个代理建立连接,并且每个代理都有一个读写线程。查看每个线程的堆栈跟踪可能会提示您了解它们在做什么。您还可以查看Kafka代码可能也有帮助。

我通过 Jmeter 触发了 10 个请求,其中 7 个请求进入了拒绝处理程序(如预期的那样),3 个进入了 kafka 队列处理。

通常我会添加一个阻止的拒绝处理程序。在这里看到我的回答。这将根据您的池中有多少线程来阻止您的请求处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.