siddhi任务编排
2023-03-24 20:51:54 5 举报
登录查看完整内容
siddhi任务编排
作者其他创作
大纲/内容
siddhiManager
SiddhiCompiler.parse(updatedSiddhiApp)这个parse非常重要。基于antri4进行语法解析。具体步骤updatedSiddhiApp->lexer->token-=parse->parseTree->Vistist (Tree)->返回该语法树,强转类型siddhiApp
siddhiAppRuntimeBuilder.setSiddhiAppRuntimeMap(siddhiAppRuntimeMap); 配置manger维护的所有的app运行时siddhiAppRuntime=siddhiAppRuntimeBuilder.build;这里构建一个app的运行时 siddhiAppRuntimeBuilder这个类用于构建runtime维护了一系列streamDefinitionMaptableDefinitionMap、widowDefinetionMap、aggregationDefinetionMap、trigerDafinitionMapqueryProcessorMap、streamJunctionMapsourceMap、sinkMap、tableMap、WindowMap的操作容器。这里调用build,初始化了一个runtime容器。
Manager中维护了siddhiContext和AppRuntime 的Map结构
defineTableDefinitions()defineWindowDefinitions()defineAggregationDefinitions()defineFunctionDefinitions()对于其他的定义,其实都是在维护和配置SiddhiAppRuntimeBuilder属性。
createSiddhiAppRuntime(siddhiAppString)
updateVariables(siddhiApp)1. 这里主要处理siddhiApp中的$变量,将变量替换成具体的数值。这里 ${ikey},表示待替换变量。2、key/value配置形式
初始化配置siddhiContext
接下来,这边创建了siddhiAppRuntime Builder,开始进行任务定义。
最后返回runtime,总结--下create SiddhiAppRuntime 主要负责:1. 首先根据stream语法校验语法并,语法解析,生成语法树2. 根据配置的注解信息进行处理,并配置基本的shiddhiContext运行环境3、根据语法解析树开始配置运行任务,包括stream、table.window、 aggreation、function等。比如,对于stream任务的定义,会通过streamld, 将source、streamJunction、sink进行关联。同时,会配置任务运行的线程池。4. 最终完成整个任务运行环境的构建和任务的编排,然后就可以开启任务。
收藏
0 条评论
回复 删除
下一页