Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中通过AKKA并发调用外部restapi_Java_Rest_Concurrency_Akka - Fatal编程技术网

在Java中通过AKKA并发调用外部restapi

在Java中通过AKKA并发调用外部restapi,java,rest,concurrency,akka,Java,Rest,Concurrency,Akka,我正在努力 通过特斯拉服务器的API从特斯拉服务器获取汽车信息 。我想同时做这件事,也就是说,使用AKKA actors并行获取多辆车的信息 我的做法: (1)首先获取车辆总数。 (2)创建与汽车数量相等的演员。 (3)在每个参与者内部调用rest API以并行获取汽车信息。i、 e.将向每个参与者提供包含汽车id的url。 我的方法是否正确 具体来说,在第3点中,我使用AsyncHttpClient从com.ning调用了每个参与者内部的特斯拉服务器。在每个参与者内部使用AsyncHttpCl

我正在努力 通过特斯拉服务器的API从特斯拉服务器获取汽车信息

。我想同时做这件事,也就是说,使用AKKA actors并行获取多辆车的信息

我的做法:

(1)首先获取车辆总数。

(2)创建与汽车数量相等的演员。

(3)在每个参与者内部调用rest API以并行获取汽车信息。i、 e.将向每个参与者提供包含汽车id的url。

我的方法是否正确

具体来说,在第3点中,我使用
AsyncHttpClient
com.ning
调用了每个参与者内部的特斯拉服务器。在每个参与者内部使用
AsyncHttpClient
是否可以确保每个参与者将异步向服务器发送请求,而不阻塞其他参与者


如有需要,将提供更多信息。我是阿克卡的初学者。查找了很多线程,但无法准确找到我要查找的内容。

特别是对于第3点,只要在参与者中使用基于
的API,参与者就不会阻塞

一般来说,在不知道为什么选择每辆车使用一名参与者的情况下,很难说出更多关于您的方法的信息

考虑这个问题:为什么您不能简单地创建一个URL的
listOfCars:List[String]
,然后使用
Future.traverse(listOfCars)(downloadCarDataForUrl)


最后,我不知道
AsyncHttpClient
的行为如何,但我会再次检查,如果您有数千辆汽车的列表,
AsyncHttpClient
将不会同时下载所有汽车。。。如果是这样的话,您可能会很快被api提供程序阻止。如果这成为一个问题,您可以查看akka http,它只使用有限数量的连接到某个主机。

我选择每辆车有一个参与者的目的是同时从服务器获取每辆车的数据。但似乎我也可以用一个参与者使用基于未来的API做同样的事情。你对此有什么建议?你认为哪一种方法更好?我不建议每次下载使用一个演员,如果你以后不使用演员做任何其他事情的话。因此,如果唯一的目的只是下载,请使用基于未来的变体。现在,再次强调,不需要创建一个参与者来处理所有下载,但是可以使错误处理更容易实现。。不仅仅是下载,我还试图从服务器上实时连续传输多辆车的数据,并将实时数据持续推送到amazon kinesis…:)我试着按照你的建议使用AKKA Http,但不断地获取scala方法/类未发现异常…两天都无法解决。所以我最终采用了这种方法……在这种情况下,演员已经更合适了。每个参与者可以管理1辆车的状态,并根据发生的事件采取不同的操作。。。