使用Dispatcher with Spray HttpService

时间:2015-12-15 19:55:49

标签: scala akka spray spray-dsl spray-routing

我的应用程序有一个使用SprayCan的API。在应用程序中,任何阻塞代码都为每个特定资源都有一个单独的调度程序。

是否有必要通过使用自己的Dispatcher配置API服务来保护API服务不受阻止?

通常的做法是将路由器用于API服务来处理更大容量的请求吗?

 class MyService extends Actor with HttpService {...}

 val service = system.actorOf(MyService.props(...).withDispatcher(???))

1 个答案:

答案 0 :(得分:2)

  

是否有必要保护API服务不被阻止   通过配置它自己的Dispatcher来应用它?

通常没有必要。使用Spray检查作为默认配置的reference.conf,看看该调度程序是否满足您的需求。如果没有,请提供自定义的。

  

通常的做法是将路由器用于API服务   处理更大容量的请求?

通常请求被移交给另一个Actor以解除阻塞路由或以Future运行(可能在单独的线程池中)。请在此处查看所有可用选项:How does spray.routing.HttpService dispatch requests?

最后,您不应该阻止路由处理程序,因为它会阻止您的服务。从您的描述中可以看出,您的阻止代码以Future或类似方式运行。只要它不使路由处理程序等待结果/阻塞它就没问题。