2012-09-14 1 views
1

À des fins de statistiques, je veux compter combien de demandes sont faites sur une seule connexion Http (combien de demandes de maintien sont faites sur un socket ouvert).Vertx.io - comment obtenir le nombre de demandes effectuées sur une seule connexion http?

Dans node.js j'ai accès à 'socket' dans l'objet de requête et de réponse et je peux ajouter dynamiquement un champ, par exemple 'requests' et l'incrémenter. Je peux aussi attacher un gestionnaire 'socket close' puis enregistrer le champ 'request' dans syslog et obtenir la moyenne de 1 min dans Graphite.

Est-ce possible avec vertx.io? Je ne peux pas trouver le champ socket dans les classes HttpRequest et HttpResponse.

Répondre

2

Il n'y a pas de moyen simple de le faire.

Vous pouvez faire un hack: HttpServerRequest est en fait une instance de org.vertx.java.core.http.impl.DefaultHttpServerRequest qui a champ privé ServerConnection conn. Ce champ est accessible par réflexion, comme décrit par exemple ici: http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html. Le comptage des demandes peut être implémenté en créant une carte des connexions aux entiers.

Ce hack est assez bon pour les tests, mais je ne vais pas travailler sur la production en raison de fuites de mémoire. Il serait préférable d'ajouter cette fonctionnalité dans la méthode handleMessage de la classe ServerConnection et de l'exposer via JMX.

Questions connexes