Java kafka客户端包中的AdminClient是线程安全的吗?

Java kafka客户端包中的AdminClient是线程安全的吗?,java,apache-kafka,Java,Apache Kafka,我需要在生成事件之前提供卡夫卡主题的存在性,默认的卡夫卡主题自动创建是不够的。我已决定使用AdminClient类,但我担心一致性问题。 ApacheKafka 2.2.x的文档中没有关于线程安全的信息。有人知道吗?Kafka的AdminClient旨在用于管理任务,因此不需要在需要线程安全的上下文中使用它 如果您需要多个线程同时为不同的任务使用AdminClient,您可以简单地实例化多个实例,并分别在各自的线程中使用它们。他们将各自独立完成工作,没有并发问题,因为他们不需要彼此交谈,甚至不需

我需要在生成事件之前提供卡夫卡主题的存在性,默认的卡夫卡主题自动创建是不够的。我已决定使用AdminClient类,但我担心一致性问题。

ApacheKafka 2.2.x的文档中没有关于线程安全的信息。有人知道吗?

Kafka的
AdminClient
旨在用于管理任务,因此不需要在需要线程安全的上下文中使用它

如果您需要多个线程同时为不同的任务使用
AdminClient
,您可以简单地实例化多个实例,并分别在各自的线程中使用它们。他们将各自独立完成工作,没有并发问题,因为他们不需要彼此交谈,甚至不需要了解对方。不需要多个线程访问同一实例的
AdminClient

状态:

“客户端将是多线程的;多线程将能够使用同一AdminClient对象安全地进行调用。”


除此之外,管理客户端的线程安全性没有文档记录。

是的,Apache Kafka的AdminClient在其出现的每个版本中都是线程安全的。我们将创建一个PR来更新文档(我以为它已经在JavaDoc中了,但看起来不是。)

我不认为这是同步的AdminClient实例化非常昂贵,因为它们需要建立新的连接。再加上SSL握手等,您就会明白为什么重用现有的AdminClient是有意义的。因此,让多个线程访问同一个实例不是一个坏主意