我正在尝试使用类型化执行器版本2.6.3和akka http版本10.1.11,而在非类型化执行器中都运行良好,现在我得到了编译错误
object Main extends App {
def createServer(implicit system: ActorSystem[IdentityCalculated]) = {
implicit val materializer = ActorMaterializer()
}
def apply(): Behavior[IdentityCalculated] = {
Behaviors.setup { context =>
val identityManager = context.spawn(IdentityManager(), "identity-manager")
implicit val timeout = Timeout(10, TimeUnit.SECONDS)
implicit val scheduler = context.system.scheduler
identityManager.tell(CalculateIdentity(context.self))
Behaviors.receiveMessage{
case IdentityCalculated(_,_,_) =>
println("got response")
Behaviors.same
}
}
}
ActorSystem(Main(), "credentials-manager")
}
您可以使用经典流(尽管运行在非类型化的ActorSystem
上,但仍然是类型化的),方法是替换:
implicit val materializer = ActorMaterializer()
与
implicit val materializer = system.classicSystem
我正在尝试在Scala上实现AKKA http和一些Actor。我用Akka创建了一个web应用程序。但我在一个或两个不同的路由上有这个错误/16。(显然是随机的): 服务器无法及时响应您的请求。请稍后再试! 你能给我解释一下为什么和怎么修吗?我对Akka真的是新手。 主类:
``` 所以,我的问题是--有没有一种干净的方法来结构和重构路由,而不是将它们集中在一个大的路由定义中?我也许可以创建一个参与者(路由器)的层次结构,主路由定义只是将其委托给路由器,随着我们深入参与者层次结构,我们会逐步添加更多的细节。但是否有一两种普遍接受的模式来组织路线呢?
正如我在akka规范中所读到的,它在actors中支持mdc。例如,我可以将unic信息放在mdc中,然后在actor中使用它。但是期货呢?akka是否提供了任何保证,即在actor中启动的未来将具有相同的mdc?另外,发送给其他参与者的消息呢?默认情况下是否复制了MDC? 注意事项 对我来说,这看起来很奇怪,我只能在一个参与者代码中使用MDC。
对于我正在构建的新akka应用程序,我有一个设计挑战。问题/挑战是:在客户端,我制作了一个简单的actor,它发送一个请求,然后使用been()来等待正确的服务器应答,当然还包括一条超时消息,以防我在正确的时间内没有得到应答。然而,有趣的是在服务器端。这里我有以下结构: 参与者A(配置为循环路由器)此路由器正在接收来自客户端的所有请求。 参与者A然后将消息转发给参与者A1、A2。。。Ax都是在演员
我很难弄清楚我如何知道我的演员何时从非演员代码中完成。 尝试使用akka演员进行并行执行,这似乎真的很好,但我需要知道何时所有人都完成了。 我添加了一个监督者演员,产生演员来做工作,从监督者/父演员,我可以观看孩子的终止消息。 我需要从akka actor系统之外的常规java代码中得到帮助,以确定我的监督actor是否完成。 这是否可能,请提供指针。 谢谢哈瑞