在Akka阻止IO

时间:2012-02-28 15:44:49

标签: scala akka

我最近正在做一些Akka并且想知道:我可以在Akka中阻止I / O而不会遇到大麻烦吗?让我们说我们有一个执行一些阻塞I / O的Actor,因为它使用了一个遗留库或者出于任何其他原因:我不能只为那些合理大小的ThreadPool并且没有阻塞I / O的Actors使用特殊的调度程序阻止所有其他演员,因为他们与不同的调度员一起运行?

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

1 个答案:

答案 0 :(得分:17)

阻塞IO通常是一个坏主意,特别是在反应式多线程环境中,所以你的第一步就是尽量避免它,这意味着要考虑使用AsyncHttpClientHttpAsyncClient

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

您还可以查看IO Actor模块,以获得更加原始的网络IO接口。

希望这有任何帮助,

干杯, √