Siddhi CEP 3.x 新手问题

Siddhi CEP 3.x newbie questions

我是 Siddhi 的新手,有几个问题:

  1. SiddhiManager线程安全吗?每个 JVM 一个共享实例是一个好习惯吗?
  2. 如何在运行时定义流和添加查询?它似乎只有 siddhiManager.createExecutionPlanRuntime(plan) ,它将创建一个新的 ExecutionPlanRuntime 实例。以及如何重新定义流和查询?

  3. inEventsremoveEventsQueryCallback 中是什么?

    
     executionPlanRuntime.addCallback("query1", new QueryCallback() {
            @Override
            public void receive(long timeStamp, Event[] inEvents, Event[] removeEvents) {
                EventPrinter.print(timeStamp, inEvents, removeEvents);
            }
        });
     
  4. 如果我有很多流和查询,Siddhi 将如何扩展?

谢谢!

  1. 是的。 SiddhiManager 是线程安全的,这是一个很好的做法 每个 JVM 一个共享实例。事实上,Siddhi Manager 就是这样 用于 WSO2 CEP。
  2. 在 Siddhi 流定义 + 查询组合被认为是 执行计划。没有专门的方法来编辑执行计划 在 Siddhi 级别,而不是使用重新部署 创建执行计划方法。请注意,您将获得一个新的 ExecutionPlanRuntime 对象由这个。因此不能重用旧输入 处理程序引用。
  3. inEvents 数组表示 Siddhi 和 removeEvents 表示 Siddhi
  4. 发出的过期事件
  5. 如果你有很多查询,Siddhi 会很好地扩展 执行计划。但是当使用多个执行计划进行扩展时 Siddhi 将很快达到资源阈值,因为资源 每个执行计划的利用率都不高,这将导致性能下降。 最近我们做了改进来解决这个限制 在这 [1] 封邮件中解释。 master 可以改进 分支.

[1] http://wso2-oxygen-tank.10903.n7.nabble.com/Siddhi-Making-Disruptor-configurable-td136499.html