我有一个 java HttpServer 到目前为止没有任何问题。这是我现在的代码:
import java.io.*;
import java.net.*;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class Main {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/", new IndexHandler());
server.setExecutor(null);
server.start();
}
static class IndexHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "test";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
System.out.println(String.format("%s %s %d %d -", t.getRequestMethod(), t.getRequestURI(), t.getResponseCode(), response.length()));
}
}
}
该代码记录了 URI、状态代码、请求方法和响应长度。如何计算从请求开始到关闭所用的时间?顺便说一句,我已经研究了文档,但他们没有任何内部实现。
您必须使用中间件包装您的请求,然后您必须记录响应时间。我们正在使用公制中间件来做同样的事情。这取决于您使用的服务器。我们使用的是http4s,否则您必须编写自定义中间件。
val middleware: HttpMiddleware[F] = {
{ service: HttpRoutes[F] =>
metrics(service)
} compose { service: HttpRoutes[F] =>
hadoopLoggerMiddleware(service)
} compose { service: HttpRoutes[F] =>
kafkaTrafficForwarder(service)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句