我正在尝试使用TwilioRestClient API创建绑定。我必须从文件中读取输入,然后为每个输入创建绑定。因为有成千上万的记录,所以我尝试了并行处理。但这有时会给我http 409。如果不使用并行处理,我将获得100%的成功。但是随着线程数的增加,成功率会降低。
Callable task = () -> {
// Call to TwilioRestClient create bindings goes here.
}
ForkJoinPool pool = new ForkJoinPool(8); //Utilising 8 cores
List<Bindings> bindings = (List<Bindings>) pool.submit(task).get();
我希望为从文件中读取并传递给API的所有记录创建绑定。当尝试使用8个内核进行并行处理时,在1000条记录中,大约有800条成功。随着我减少核心数,成功率增加。我在做什么错了?
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
Twilio API具有concurrency limit of 100 concurrent connections。我的猜测是,尽管我对Java的并发和线程处理经验不足,但是随着线程数量的增加,您会遇到并发限制,这就是请求失败的原因。
我建议回拨直到您建立的并发连接少于100个,这将导致您成功完成100%的请求。抱歉,我无法建议您如何在代码库中实现此目标。