Elasticsearch 5.x 源码分析(9)聊聊ES的IoC 和 ClassLoader

2021-12-31 00:00:00 代码 自己的 调用 的是 拦截

这两周做的事情比较杂,所以看代码的点也稍微有点分散,不过我尽量用手头的例子来把这些东西串起来。 做的事情还是上两周那件事:我想拦截ES的Request 和Response,统计我自己想要的指标并保存,那么需要完成以下3件事情:

  1. 怎么拦截
  2. 除了Request 和Response 外如何获取container 里的其他Service
  3. 如何去跑我自己的拦截代码的逻辑

怎么拦截

其实这个话题我在上一篇(Elasticsearch 5.x 源码分析(8)用plugin来拦截Request、Response 的可行性调研)已经详细介绍了,大家有兴趣可以往回翻一下看看就好了,只是这种办法大的缺点就是不是很美观,埋的点也很多,甚至有时可能需要入侵ES的源代码,这几天捣鼓的是另外一个方法:AspectJ 拦截。

根据上一篇的思路,RestSearchTemplateAction 调用的是

channel -> client.execute(SearchTemplateAction.INSTANCE, searchTemplateRequest, new ActionListener<SearchTemplateResponse>() 而RestSearchAction调用的是

相关文章