从演员内部的请求中检索会话信息?

时间:2014-04-06 22:34:16

标签: scala playframework akka playframework-2.2

所以我是scala,play和akka的新手。

我有一个Play端点,它有一个Action。该操作将传入的json发送到Actor1,后者解析并验证json,然后将解析后的json对象发送到Actor2以对数据进行一些处理。这可能继续下去,也许Actor2向Actor3或甚至Actor4发送消息。问题是,当我在这些演员中时,我需要一种从会话中获取信息的方法,比如userId。

以下是我的问题:

  1. play是否管理在actor内部运行的请求上下文,以便我可以以某种方式从actor内部检索会话信息,而不必通过每条消息传递它?
  2. Play为请求管理某种上下文,同时将消息传递给演员吗?如果我没有弄错,他们会为数据库事务执行此操作,以便您在单独的线程中执行的所有数据库操作都在同一个数据库事务中执行,然后在发送响应时提交。我是否也可以将会话信息附加到此上下文中?
  3. 我可以使用scala implicits以干净的方式传递它吗?

1 个答案:

答案 0 :(得分:0)

  1. 没有。 Play是一个无状态的Web框架,如果您想从请求中获取任何内容,您必须将其包含在传递给actor的消息中。

  2. Play不会自动处理事务,也不能跨多个actor使用事务。

  3. 是的,你可以,但对于这个用例,我真的不认为需要演员。