我目前有以下架构:
负载(具有用于负载测试的基本接口的播放应用程序)-> 网关(具有用于传入消息的 REST 接口的喷雾应用程序)-> 处理器(与 MongoDB 一起使用的 akka 应用程序)-> MongoDB
只要我推送的消息数量很少,一切正常。但是,当我尝试推送 10000 个事件时,最终将在 MongoDB 作为文档结束,它会在随机位置停止,例如在 742 消息或 982 消息上,之后什么也不做。
调试这种情况的最佳方法是什么?在负载方面,我只是在努力推动 REST 服务:
for (i ← 0 until users) workerRouter ! Load(server, i)
然后在workerRouter
WS.url(server + "/track/message").post(Json.toJson(newUser)).map { response =>
println(response.body)
true
}
在喷雾方面:
pathPrefix("track") {
path("message") {
post {
entity(as[TrackObj]) { msg =>
processors ! msg
complete("")
}
}
}
}
在处理器方面,它基本上只是插入到集合中。关于从哪里开始有什么建议吗?
更新:我尝试将创建消息的逻辑移至 Gatewat,执行 1 到 10000 的循环,它工作得很好。但是,如果在管道中涉及喷射和播放,它会中断和随机位置。在这种情况下如何调试有什么建议吗?