【发布时间】:2013-03-28 23:11:56
【问题描述】:
我想在协作参与者系统中隐式传播请求上下文。
为了简化和呈现这种情况,我的系统有多个参与者,传递给这些参与者的消息需要包含这个 RequestContext 对象。
ActorA 接收 MessageA 类型的消息 ActorB 接收 MessageB 类型的消息
当 ActorA 需要向 ActorB 发送消息时,作为 MessageA 处理的一部分,它会执行业务逻辑,然后根据逻辑结果以及 MessageA 中可用的 RequestContext 构造一个 MessageB,然后将其发送给 ActorB
def handle(ma:MessageA) {
val intermediateResult = businessLogic(ma)
actorB ! MessageB(intermediateResult, ma.requestContext)
}
我们要处理大量消息,并且显式传递 requestContext 很麻烦。
我正在尝试创造性的方法来使用 Scala 的隐式功能,以避免将嵌入在传入消息中的 RequestContext 显式注入到传出消息中。
消息是案例类(它们必须是)。我已经阅读了有关隐式规则的内容,但是将对象的属性带入当前的隐式范围似乎有些牵强。
这个,我相信应该是一个普遍的要求。 有什么建议 ?
谢谢。
【问题讨论】:
标签: scala akka actor implicit-conversion implicit