出于统计目的,我想计算在单个Http连接上发出了多少请求(在一个打开的套接字上发出了多少个保持活动请求)。
在node.js中,我可以访问请求和响应对象中的'socket',我可以动态添加一个字段,例如'requests'并递增它。我还可以附加'socket close'处理程序,然后将'request'字段记录到syslog中,并在Graphite中获得1分钟的平均值。
这可以用vertx.io吗?我无法在HttpRequest和HttpResponse类中找到socket字段。
答案 0 :(得分:2)
没有直接的方法可以做到这一点。
你可以做一个黑客攻击:HttpServerRequest
实际上是org.vertx.java.core.http.impl.DefaultHttpServerRequest
的私有字段ServerConnection conn
的实例。可以通过反射访问此字段,例如:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html。可以通过创建与整数的连接映射来实现请求计数。
这个hack足以用于测试目的,但由于内存泄漏,我不会在生产上工作。最好将此功能添加到handleMessage
类的ServerConnection
方法中,并通过JMX公开它。