前言
cat的Client端所做的工作就是收集埋点信息,将埋点信息处理成messageTree,放到发送队列中,在启动另一个线程,异步消费队列,进行消息的发送。
本文涉及到三个内容:
- 客户端初始化:做了哪些准备工作
- message的创建过程
- 客户端的发送过程
客户端初始化
我们首先看一下Cat这个类的初始化过程
public static void initialize(PlexusContainer container, File configFile) {
ModuleContext ctx = new DefaultModuleContext(container);
Module module = ctx.lookup(Module.class, CatClientModule.ID);
if (!module.isInitialized()) {
ModuleInitializer initializer = ctx.lookup(ModuleInitializer.class);
ctx.setAttribute("cat-client-config-file", configFile);
initializer.execute(ctx, module);
}
}
- 利用plexuscontainer,获得defaultModelContext
- 利用context从plexus容器中获得CatClientModule和ModuleInitializer
- Initializer.execute(ctx,module)
在这个方法中,涉及到最重要的方法就是启动一个statusUpdateTask的线程,下边就是这个线程run方法执行的流程,最重要的一步就是4,将m_statistic和m_jars传入statusInfoCollector的构造函数进行实例化,然后使用访问者模式ÿ