У меня есть следующие архитектуры в данный момент:Debug недостающих сообщений в Akka
нагрузки (Play приложение с основным интерфейсом для испытаний под нагрузкой) -> Шлюз (опрыскивание REST интерфейса для входящих сообщений) -> Processor (Акка приложение, которое работает с MongoDB) -> 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, и он работает нормально. Однако, если спрей и игра включены в трубопровод, он прерывает и случайные места. Любые предложения по отладке в этом случае?
Вы пробовали консоль Typesafe? –
Нет, я еще не пробовал. Я понял, что проблема в Play <-> Спрей-связь, потому что, если я делаю 100000 записей только на стороне Spray (значит, нет связи с HTTP), она работает нормально. –
А, ок. Вы спрашивали у пользователя-распылителя мл? –