问题描述
我的 Spring Boot 应用程序能够调用 Google pub sub API 并按预期完美运行,但前提是它不在代理后面。
我希望将我的应用部署在需要代理进行出站 HTTP 调用的本地数据中心。
- 我在我的环境中使用了
HTTPS_PROXY
。它不起作用 - 我在我的环境中使用了
grpc_proxy
。它不起作用
得到这个异常
Caused by: java.net.UnkNownHostException: pubsub.googleapis.com
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
at io.grpc.internal.DnsNameResolver$JdkAddressResolver.resolveAddress(DnsNameResolver.java:631)
at io.grpc.internal.DnsNameResolver.resolveAddresses(DnsNameResolver.java:219)
有没有其他方法可以为谷歌库注入代理?
解决方法
对此有一个解决方案。正如前面提到的 here,我们必须使用 GRPC_PROXY_EXP
。
我用这种方式 GRPC_PROXY_EXP=internet.company.com:93
并且效果很好
grpc-java 和许多 Java HTTP 库使用 Java-standard -Dhttps.proxyHost=HOST
/-Dhttps.proxyPort=PORT
来配置代理服务器的使用。
您不能使用环境变量来配置它们。通常只在命令行上传递 -D
。如果您想全局配置它,您可以在 JRE 中更改 lib/net.properties
。