kafka AdminClient无法在已部署的环境中工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka AdminClient无法在已部署的环境中工作相关的知识,希望对你有一定的参考价值。

我使用spring kafka连接到kafka并检查kafka服务器的状态,我正在使用org.apache.kafka.clients.admin.AdminClient。它在我的本地工作正常但是当我部署到QA环境时,它没有启动,抱怨无法创建AdminClient bean。我的猜测是AdminClient将使用任何特定的端口,这在QA环境中是不会打开的。

有人知道是否是这种情况以及KafkaAdmin连接到哪个端口?没有KafkaAdmin的春天kafka似乎工作正常。

答案

没什么特别的。 KafkaAdmin基于一些提供的配置:

/**
 * Create an instance with an {@link AdminClient} based on the supplied
 * configuration.
 * @param config the configuration for the {@link AdminClient}.
 */
public KafkaAdmin(Map<String, Object> config) {

这个配置确实用于AdminClient内部实例:

 adminClient = AdminClient.create(this.config);

那个是基于AdminClientConfig

/**
 * Create a new AdminClient with the given configuration.
 *
 * @param conf The configuration.
 * @return The new KafkaAdminClient.
 */
public static AdminClient create(Map<String, Object> conf) {
    return KafkaAdminClient.createInternal(new AdminClientConfig(conf), null);
}

所以,你可以在AdminClient找到AdminClientConfig连接所需的所有属性。并注意默认情况下主机/端口与任何其他客户端完全相同:

public static final String BOOTSTRAP_SERVERS_CONFIG = CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG;

private static final String BOOTSTRAP_SERVERS_DOC = CommonClientConfigs.BOOTSTRAP_SERVERS_DOC;

因此,当您创建KafkaAdmin实例时,您应该至少提供bootstrap.servers属性。

也很高兴看到在上述环境中发生的堆栈跟踪。

以上是关于kafka AdminClient无法在已部署的环境中工作的主要内容,如果未能解决你的问题,请参考以下文章

kafka AdminClient 闲时关闭连接

Kafka核心API——AdminClient API

Kafka核心API——AdminClient API

Kafka 0.11客户端集群管理工具AdminClient

kafka AdminClient API 等待节点分配超时

Kafka 0.11客户端集群管理工具AdminClient