我需要从外部java应用程序连接到kafka集群,该集群是作为azure上hdinsight的一部分启动的。我有一个集群,有3个代理示例,3个zookeeper和一个zookeeper客户端。
现在我的问题是:如何指定代理连接字符串。在管理面板上,我可以看到3个代理,如: -1.yyy.zzz.internal.cloudapp.net
, -2.yyy.zzz.internal.cloudapp.net
-但是这些地址不能从外部获得。如果我试一下,我会看到一个例外:
kafkaexception:构造kafka使用者失败
...
configexception:bootstrap.servers中的url无效:-1.yyy.zzz.internal.cloudapp.net
4条答案
按热度按时间2hh7jdfx1#
检查Kafka配置并设置属性
auto.create.topics.enable
至true
. 重新启动Kafka并重试。fumotvh32#
如果从本地网络连接,则需要设置站点到站点vpn网关,有关详细信息,请参阅从本地网络连接到apache kafka。
如果从单个计算机连接,则需要设置点到点vpn网关,有关详细信息,请参阅使用vpn客户端连接到apache kafka。
w80xi6nr3#
问题是您正在尝试解析内部azure主机名,这些主机名无法从internet解析。您还需要注意,从internet直接连接到Kafka示例是不可能的。
您需要另一个层/网关,如图中所示。
据我所知,你可以选择直接连接或使用其他层之间,如azure物联网枢纽和连接器。
您可以根据您的用例选择所需的服务,但请注意,这些服务不是免费的,并且根据您的数据大小,它可能会为您的收据添加重要的位置。
wh6knrhe4#
如果您有3个代理kafka集群,它将抛出此错误。因此,无论何时运行kafka生产者和消费者,都要创建一个具有相同复制因子和代理数的主题。
命令
此命令用于3代理hdinsigt集群