我正在努力 通过其API
获取Tesla Server的汽车信息。我想同时做到.i.e 使用AKKA演员并行获取多辆汽车的信息
我的方法:
(1)首先获得汽车总数。
(2)创建等于汽车数量的演员。
(3)在每个actor内部调用rest API以获取并行的汽车信息。即将为演员提供包含车辆ID的网址。
我的做法是否正确?
具体来说,在第3点,我使用来自AsyncHttpClient
的{{1}}来调用每个演员内部的特斯拉服务器。在每个actor中使用com.ning
是否确保每个actor都将异步发送请求到服务器而不阻塞其他actor?
如果需要,将提供进一步的信息。我是AKKA的初学者。看了很多线程但找不到我想要的东西。
答案 0 :(得分:1)
特别是对于第3点,只要您在演员中使用基于Future
的API,演员就不会阻止。
一般来说,如果不知道为什么每辆车选择使用一名演员,就很难说出你的方法。
请考虑以下问题:为什么您不能简单地创建listOfCars: List[String]
个网址并使用Future.traverse(listOfCars)(downloadCarDataForUrl _)
?
最后,我不知道AsyncHttpClient
的行为如何,但我会仔细检查,如果你有数千辆汽车的清单,AsyncHttpClient
将不会同时下载所有汽车......如果在这种情况下,您可能会被api提供商很快阻止。如果这成为一个问题,你可以查看akka-http,它只使用与某个主机的连接数限制。