Java中BigQuery模拟器下JsonStreamWriter集成测试问题
BigQuery模拟器下JsonStreamWriter创建卡住的问题解决
问题原因
你遇到的卡住问题,核心原因是BigQueryWriteClient默认启用了TLS加密连接,但本地的BigQuery模拟器只提供明文的gRPC服务(9060端口),导致客户端一直在尝试建立加密连接,最终超时卡住。原代码也缺少针对模拟器的明文连接配置。
解决方法
需要在BigQueryWriteSettings中显式禁用TLS,并确保客户端配置适配模拟器的明文环境,修改后的完整代码如下:
// 配置适配模拟器的BigQueryWriteSettings,禁用TLS加密 BigQueryWriteSettings writeSettings = BigQueryWriteSettings.newBuilder() .setEndpoint("localhost:9060") .setTransportChannelProvider( BigQueryWriteSettings.defaultGrpcTransportProviderBuilder() .setPlaintext() // 关键配置:启用明文连接,匹配模拟器的gRPC服务 .build() ) .build(); // 使用try-with-resources管理客户端资源,避免泄漏 try (BigQueryWriteClient writeClient = BigQueryWriteClient.create(writeSettings)) { JsonStreamWriter streamWriter = JsonStreamWriter.newBuilder( TableName.of(BQ_PROJECT, BQ_DATASET, BQ_TABLE).toString(), writeClient ) .build(); // 这里添加streamWriter的后续业务逻辑 } catch (IOException e) { e.printStackTrace(); }
额外检查项
- 确认本地BigQuery模拟器的9060端口处于正常监听状态,可通过
netstat或类似工具验证 - 如果仍有连接问题,可设置环境变量
GRPC_VERBOSITY=DEBUG开启gRPC日志,排查具体连接错误细节
内容的提问来源于stack exchange,提问作者Emanuel Trandafir
相关产品推荐
相关产品推荐

