使用spray时,我一直遇到相同的设计问题,即在Akka中执行一些异步(tell)操作之后,如何为请求找到spray http请求的原始上下文。
我使用的是Net-a-Porter actor per request模型。它创建了一个子执行元,我指定该子执行元来处理每个请求,该子执行元由另一个包含正确请求上下文的执行元进行封装。
def receive: Receive = {
case v : InputJson =>
val id = createId
val redisList = context.actorOf(Props[RedisListActor])
// At this point, sender is the 'per-request' actor created, which has the HTTP context of the Spray request.
redisList ! ListRequest(id, sender.path.toStringWithoutAddress, v)
case kr : KubernetesReply =>
context.system.actorSelection(kr.actorPath) ! TaskResponse("Success", kr.payload, kr.id)
您可以将ActorRef
直接放入ListRequest
消息中。
case class ListRequest(id: YourIdType, requestActor: ActorRef, json: InputJson)
def receive: Receive = {
case v : InputJson =>
val id = createId
val redisList = context.actorOf(Props[RedisListActor])
redisList ! ListRequest(id, sender, v)
case kr : KubernetesReply =>
kr.requestActor ! TaskResponse("Success", kr.payload, kr.id)
}
我正在Akka、Spray和Log4j2中构建一个新应用程序。我的大多数主要系统都在“hello world”类型的模式下工作,但我很难让日志正常工作,我无法判断这是log4j2问题、Akka/Spray问题还是我的迟钝问题。 首先,我的Akka配置文件 现在,如果我把loggers行注释掉,在IntelliJ中运行这个应用程序,它在控制台中是完美的。我得到我想要的一切,我得到非常详细和有用的日志
默认情况下playbook中的任务执行时会一直保持连接,直到该任务在每个节点都执行完毕.有时这是不必要的,比如有些操作运行时间比SSH超时时间还要长. 解决该问题最简单的方式是一起执行它们,然后轮询直到任务执行完毕. 你也可以对执行时间非常长(有可能遭遇超时)的操作使用异步模式. 为了异步启动一个任务,可以指定其最大超时时间以及轮询其状态的频率.如果你没有为 poll 指定值,那么默认的轮询频率是
我正在尝试用Jasmine和RequireJS做一些测试。一切都进行得很好,直到我注意到我所描述的函数的上下文出现了问题。 有人知道怎么解决这个吗?
我搜索了许多网站和文档,但异步调用使用的代码相同。但不确定为什么它不起作用。如果我错过了什么,有人能帮我吗?
概述 定时器 Promise 对象
我正在使用谷歌教程推荐的实用程序类,这个错误让我深受打击。显然,不能同时运行多个异步操作。我甚至试图在盘点仍在进行的时候开始购买,成功了。 我已经按照这里的建议尝试在我的主类中实现了,但在出现错误之前,我甚至没有得到对该方法的调用。然后我找到了这个,但我不知道在哪里可以找到这个方法——它不在类中。 现在我正在寻找一种方法来解决这个问题(而不需要重新实现整个她-邦)。我能想到的唯一解决方案是创建一个