Java 连接到HDInsight(Azure)上安装的Kafka

Java 连接到HDInsight(Azure)上安装的Kafka,java,azure,apache-kafka,azure-hdinsight,Java,Azure,Apache Kafka,Azure Hdinsight,我需要从外部java应用程序连接到Kafka群集,该群集作为Azure上HDinsight的一部分启动。我有一个包含3个代理实例、3个ZooKeeper和一个ZooKeeper客户端的集群 现在我的问题是:如何指定代理连接字符串。在管理面板上,我可以看到3个代理,如:xxx-1.yyy.zzz.internal.cloudapp.net,xxx-2.yyy.zzz.internal.cloudapp.net——但这些地址无法从外部获得。如果我尝试,则可以看到异常: KafkaException:

我需要从外部java应用程序连接到Kafka群集,该群集作为Azure上HDinsight的一部分启动。我有一个包含3个代理实例、3个ZooKeeper和一个ZooKeeper客户端的集群

现在我的问题是:如何指定代理连接字符串。在管理面板上,我可以看到3个代理,如:
xxx-1.yyy.zzz.internal.cloudapp.net
xxx-2.yyy.zzz.internal.cloudapp.net
——但这些地址无法从外部获得。如果我尝试,则可以看到异常:

KafkaException:无法构造kafka使用者

ConfigException:引导中的url无效。服务器: xxx-1.yyy.zzz.internal.cloudapp.net

如果您有3个代理kafka群集,它将抛出此错误。因此,无论何时运行卡夫卡制作者和消费者,都要创建一个具有相同复制因子和代理数的主题

命令

bin/kafka-topics.sh --create --topic test --zookeeper node1:2181,node2:2181,node3:2181 --partitions 1 --replication-factor 3

此命令适用于3 broker hdinsigt群集。问题是您正在尝试解析内部azure主机名,这些主机名无法从internet解析。 此外,您还需要注意,无法从internet直接连接到Kafka实例

您需要另一层/网关,如您在此处所见

据我所知,您可以在a层之间进行选择,也可以在a层之间使用另一层,如和


您可以根据您的用例选择所需的服务,但请注意,这些服务不是免费的,并且根据您的数据大小,它可能会为您的收据添加重要位置。

检查您的卡夫卡配置并设置属性
auto.create.topics.enable

true
。重新启动Kafka并重试。

如果您从内部部署网络连接,则需要设置站点到站点VPN网关,请参阅以获取详细信息


如果您从单个计算机连接,则需要设置点到点VPN网关,请参阅以了解详细信息。

请格式化您的答案并修复语法错误。这与答案完全不相关。主题存在-因为从同一Azure网络中启动的其他VM,我可以与Kafka实例通信。我的问题是如何从外部网络实现实例
bin/kafka-topics.sh --create --topic test --zookeeper node1:2181,node2:2181,node3:2181 --partitions 1 --replication-factor 3