akka - 在 Spray.io 应用程序中传递变量

标签 akka spray

我正在使用 Spray.io 构建 Web 服务,该服务位于使用 Akka 构建的核心应用程序之上。

当我收到一个请求时,它会被一个喷射路由处理,该路由又将(使用告诉)将请求发送到处理请求并使用请求上下文返回响应的参与者。

我在初始路由中对用户进行身份验证和授权,并且此身份验证/授权返回一个包含用户数据的用户对象。

我需要能够在各个点访问核心 Akka 应用程序中的这个用户对象。我不想将它作为参数传递给发送给 Actor 的每条消息(案例类),因为这看起来很困惑,因为有时我会将它传递给 Actor ,以便它可以传递给另一个 Actor .是否有更好/推荐的方法使系统中的其他参与者可以使用此对象?它可以附加到请求上下文本身还是不好的做法?

谢谢

最佳答案

如果您想要做的是避免在创建案例类实例时必须传递身份验证信息的样板,您可以向它们添加一个隐式参数列表:

scala> implicit val i = 1
i: Int = 1

scala> case class X(s: String)(implicit val y: Int)
defined class X

scala> val x = X("foo")
x: X = X(foo)

scala> x.y
res4: Int = 1

您仍然在每条消息中传递身份验证信息,并且您不能在第二个参数列表上使用模式匹配,但取决于您要完成的工作,它可能会起作用。

关于akka - 在 Spray.io 应用程序中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31157789/

相关文章:

spray - 如何生成 URL 以链接回对象?

json - 将 DateTime 转换为 JSON 字符串

scala - 如何将参与者消息限制为特定类型?

scala - Akka 中 Stash 的目的是什么?

scala - child Actor 终止验证

scala - 使用 akka-http 从 src/main/resources 返回一个文件

scala - 执行上下文和调度程序 - 最佳实践、有用的配置和文档

maven - GA 发布 Artifact akka-http 和 akka-streams 1.0 在哪里?

java - 通过 Akka 在 Java 应用程序和 Scala 应用程序之间传输对象消息

Akka 2.6 如何在 Akka Typed 中读取 `Dead Letters`?