Аудит запросов и ответов Jetty Client

У меня есть требование подсчитать транзакции причала и измерить время, необходимое для обработки запроса и получения ответа, используя JMX для нашей системы мониторинга.

Я использую Jetty 8.1.7 и не могу найти правильный способ сделать это. В основном мне нужно определить, когда отправляется запрос (из-за подхода Jetty Async он запускается из потока A) и когда ответ завершен (поскольку oncompleteResponse выполняется в другом потоке).

Я обычно использую ThreadLocal для такого состояния в других областях, где мне нужна подобная функциональность, но, очевидно, здесь это не сработает.

Есть идеи как побороть?


person YaOg    schedule 16.01.2013    source источник


Ответы (1)


Чтобы использовать асинхронные запросы причала, вам в основном нужно создать подкласс ContentExchange и переопределить его методы. Таким образом, вы можете добавить к нему дополнительное поле, которое будет содержать метку времени отправки запроса, и использовать его позже в вашем методе onResponseComplete() для измерения времени обработки. Если вам нужно знать время, когда ваш запрос был фактически отправлен на сервер, а не когда он был создан, вы можете переопределить методы onRequestCommitted() и onRequestComplete().

person Andrew Sokolov    schedule 22.02.2013