对于BigQuery表中的每个新用户条目,我必须向该用户发送一封电子邮件。
我正在使用Apache Beam从BQ获取这些条目,对于每个条目,我都向RESTful Web服务发送请求以发送电子邮件并等待响应。
问题是,当请求数量变得太大(例如一百万)时,来自Web服务的响应来得很晚,并且Apache Beam作业处于挂起状态。
有没有一种方法可能会在一分钟后停止等待响应,并继续处理Apache Beam中的其他请求?还是一分钟后将Web服务发送回超时响应会更好?
我认为后者是有道理的,但我只是想知道考虑是否在Apache Beam中并行运行,是否可以选择等待。
答案 0 :(得分:0)
您必须使用自定义超时参数覆盖HttpClient属性:
HttpParams.setConnectionTimeout(params, connectionTimeoutMillis);
HttpParams.setSoTimeout(params, socketTimeoutMillis);
第一个参数允许您指定建立初始连接的超时,第二个参数可以指定套接字在不发送数据的情况下等待的最长时间。