无法从spring启动应用程序连接到云中托管的kafka

jhkqcmku  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(266)

google云平台中的kafka虚拟机地址是 xx.xx.. .
从我的本地spring启动应用程序,通常连接到localhost:9092 of 本地机器的kafka服务器,我将其更改为gcp的虚拟机的ip xx.xx..:9092 但服务器启动时发出警告

2020-04-05 15:30:41.356  WARN 7968 --- [| adminclient-4] org.apache.kafka.clients.NetworkClient   : [AdminClient clientId=adminclient-4] Connection to node -1 could not be established. Broker may not be available.

最终超时。从springboot应用程序连接到云kafka应该有不同的方法吗?

mctunoxg

mctunoxg1#

添加了以下属性 advertised.host.name 在server.properties to public ip address中, metadata.broker.list 在producer.properties到public ip address中, host.name 到0.0.0.0。
这些属性文件将位于配置文件夹中。必须重新启动。
解决了问题。对于broker/bootstrap.sever,在添加上述属性之后,将在应用程序中使用公共ip地址。

p4rjhz4m

p4rjhz4m2#

您需要在gcp vm上使用正确的 advertised.listener 以便您的客户机在初始成功连接后从中接收到正确的主机名/ip。
您可以验证 advertised.listeners 设置使用 kafkacat -L ```
$ kafkacat -b xx.xx.xxx.xxx:9092 -L
Metadata for all topics (from broker -1: xx.xx.xxx.xxx:9092/bootstrap):
1 brokers:
broker 0 at a.b.c.d:9092

这个 `a.b.c.d.` 返回的应该是您的客户端可以成功解析到代理本身的ip或主机名(而不是环回地址、内部网络ip等)。
要了解更多信息,请参阅https://rmoff.net/2018/08/02/kafka-listeners-explained/

相关问题