如何测量akka-http的完整响应时间?

时间:2019-10-23 00:57:08

标签: scala akka akka-stream akka-http reactive

path("foo" ~ Slash.?) {
      complete(HttpEntity(ContentTypes.`application/octet-stream`, ByteString(Files.readAllBytes(Paths.get("foo")))))
}

foo是一个1GB的文件。我在响应的watchTermination周围添加了一个Flow,但是在发送响应之前我得到了通知,但实际上,我希望在完整响应后得到通知。响应已发送给客户

进一步的调查显示watchTermination建立在GraphStage的基础上,onUpstreamFinish仅支持onDownstreamFinish,只有在出现异常时才调用JNIEXPORT jstring JNICALL Java_nativ_com_nativejnitest_MainActivity_functionname(JNIEnv *env, jobject object, jobjectArray stringArray){ jsize size = (*env)->GetArrayLength(env, stringArray); char **argv = (char **)malloc(size); for (int i=0; i < size; ++i) { jstring javaString = (jstring) (*env)->GetObjectArrayElement(env, stringArray, i); const char *nativeString = (*env)->GetStringUTFChars(env, javaString, 0); argv[i] = strdup(nativeString); (*env)->ReleaseStringUTFChars(env, javaString, nativeString); (*env)->DeleteLocalRef(env, javaString); } // Sample Response char *msgOut; asprintf(&msgOut, "Response is %d ", size); return (*env)->NewStringUTF(env, msgOut); 。参见GraphStages.scala#L128

这是我完整代码的仓库:https://github.com/ssgao/akka-http-quickstart-scala/tree/master/src/main/scala/com/example

0 个答案:

没有答案