2012-02-28 62 views
18

我最近在做一些Akka,并想知道:我能阻止Akka的I/O而不会陷入大麻烦吗?让我们说我们有一个Actor来阻止I/O,因为它使用了一个遗留的库或者其他任何原因:我不能只为那些大小合适的ThreadPool的Actors使用一个特殊的调度器,并且没有阻止I/O阻止所有其他演员,因为他们与不同的调度员运行?在Akka阻止IO

这有什么缺点?从演员调用第三方HTTP-API的最佳方式是什么?

回答

17

阻止IO通常是一个坏主意,尤其是在被动多线程环境中,所以您的第一步是尽量避免它一起使用,这意味着使用AsyncHttpClientHttpAsyncClient进行调查。

如果这不起作用,您至少可以通过给阻塞角色自己的线程来降低风险。这当然会很昂贵,你仍然有冒险填满他们的邮箱,但这是使用阻塞IO的选择。

您也可能想要查看IO Actor模块,以获得更为原始的网络IO接口。

希望任何这会有所帮助,

干杯, √

+0

什么用未来从演员之内? – sourcedelica 2012-02-28 22:49:35

+0

你仍然会阻止其中你没有无限的线程。演员或期货不是问题。 – 2012-02-29 08:50:04

+0

我不喜欢问,是否有一个例子使用HTTP调用作为来自演员的客户端,我只能找到一个使用未来并等待它的人 - 这也阻止了线程。 – Malax 2012-02-29 16:12:56