Как записывать время, затрачиваемое компонентами jdbc

В моем весеннем интеграционном приложении у меня есть несколько хранимых-процедур-исходящих-шлюзов, я бы регистрировал, сколько времени занимает каждый вызов, любая помощь будет оценена. В идеале я хотел бы иметь возможность включать / отключать ведение журнала для используемых параметров, затраченного времени и общего количества полученных строк (возвращающий набор результатов) для целей мониторинга и настройки производительности.

Спасибо

1 ответ

Вы можете добавить ChannelInterceptor (подкласс ChannelInterceptorAdapter) к каналу запроса, который предоставит вам необработанное время (preSend/postSend), но время будет включать любую обработку ниже по потоку от шлюза (на прямых каналах).

Поскольку вы тоже хотите проверить результаты, вы можете запустить таймер (например, Spring StopWatch) в перехватчике (preSend) на канале запроса и остановите таймер в перехватчике на канале ответа). Если вы используете один и тот же компонент-перехватчик, вы можете сохранить таймер в ThreadLocal,

Вы можете включить / выключить коллекцию, используя логическое свойство на перехватчике.

Кроме того, вы можете добавить свой собственный совет к шлюзу.

РЕДАКТИРОВАТЬ

Совет, вероятно, лучший подход, потому что с ThreadLocal вам нужно будет добавить код к первому перехватчику для обработки сбоев и очистки. С практическим советом таймер будет просто локальной переменной метода.

Другие вопросы по тегам