google-cloud-platform - 无法从 Spring Boot 应用程序连接到托管在云中的 kafka
问题描述
谷歌云平台中的kafka虚拟机地址为xx.xx.xxx.xxx
.
从我通常连接到本地机器的kafka服务器的localhost:9092的本地spring boot应用程序中,我将其更改为GCP的虚拟机的ip为xx.xx.xxx.xxx: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?
解决方案
您需要在 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/
推荐阅读
- gstreamer - 用于录制音频的 Gstreamer 管道
- python - 使用 HTML 中没有类的 BeautifulSoup 获取元素
- python - Python:帮助将循环 a 中凌乱的 if-elif 语句阶梯转换为字典 switch 案例以创建 grpc ssl 证书
- java - 如何在java中创建一个日期对象?
- python - 自定义 Keras 层中的 ValueError
- ios - 如何在swift中更改ipad标签栏图标的位置?
- r - 从推文和对推文的回复生成图表
- javascript - vanilla javascript拖动事件中不能修改被拖动元素的css吗?
- powerbi - 如何将具有两个外键的表连接到另一个表?
- terraform - 没有变化。基础设施是最新的。地形规划