Как записывать время, затрачиваемое компонентами jdbc
В моем весеннем интеграционном приложении у меня есть несколько хранимых-процедур-исходящих-шлюзов, я бы регистрировал, сколько времени занимает каждый вызов, любая помощь будет оценена. В идеале я хотел бы иметь возможность включать / отключать ведение журнала для используемых параметров, затраченного времени и общего количества полученных строк (возвращающий набор результатов) для целей мониторинга и настройки производительности.
Спасибо
1 ответ
Вы можете добавить ChannelInterceptor
(подкласс ChannelInterceptorAdapter
) к каналу запроса, который предоставит вам необработанное время (preSend/postSend), но время будет включать любую обработку ниже по потоку от шлюза (на прямых каналах).
Поскольку вы тоже хотите проверить результаты, вы можете запустить таймер (например, Spring StopWatch
) в перехватчике (preSend) на канале запроса и остановите таймер в перехватчике на канале ответа). Если вы используете один и тот же компонент-перехватчик, вы можете сохранить таймер в ThreadLocal
,
Вы можете включить / выключить коллекцию, используя логическое свойство на перехватчике.
Кроме того, вы можете добавить свой собственный совет к шлюзу.
РЕДАКТИРОВАТЬ
Совет, вероятно, лучший подход, потому что с ThreadLocal
вам нужно будет добавить код к первому перехватчику для обработки сбоев и очистки. С практическим советом таймер будет просто локальной переменной метода.