Siddhi CEP 3.x新手问题

时间:2016-05-17 16:28:14

标签: siddhi

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

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

  3. QueryCallback 中的 inEvents removeEvents 是什么?

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

1 个答案:

答案 0 :(得分:4)

  1. 是。 SiddhiManager是线程安全的,这是一个很好的做法 每个JVM一个共享实例。事实上,这就是Siddhi经理的方式 用于WSO2 CEP。
  2. 在Siddhi中,流定义+查询组合被视为一个 执行计划。没有专门的方法来编辑执行计划 在Siddhi级别,而不是重新部署使用 createExecutionPlan方法。请注意,您将获得一个新的 ExecutionPlanRuntime对象由此而来。因此无法重用旧输入 处理程序引用。
  3. inEvents数组表示Siddhi发出的当前事件 removeEvents表示Siddhi发布的过期事件
  4. 如果你有很多单一的查询,Siddhi会很好地扩展 执行计划。但是当扩展到多个执行计划时 自资源以来,Siddhi将迅速达到资源门槛 每个执行计划的利用率很低,这将导致性能下降。 最近我们做了一些改进以解决这个限制 在[1]邮件中解释。主人可以改进 分支。
  5. [1] http://wso2-oxygen-tank.10903.n7.nabble.com/Siddhi-Making-Disruptor-configurable-td136499.html