在SiddhiManager&中添加多个查询引用中间流

时间:2016-05-04 05:23:04

标签: siddhi

  1. 使用Siddhi 1.x我们可以做到:

    siddhiManager.defineStream(“define stream firstStream(id int,name string)”);     siddhiManager.defineStream(“define stream secondStream(id int,name string)”);     siddhiManager.defineStream(“define stream thirdStream(id int,name string)”);

    siddhiManager.addQuery("from every F = firstStream  " +
            " -> S = secondStream [F.id == S.id] within 1 min" +
            "insert into midStream F.id as id, F.name as name, S.id as secondId ;");
    
    siddhiManager.addQuery("from every M = midStream  " +
          " -> T = thirdStream [M.id == T.id] within i min " +
        "insert into outputStream M.id, M.name, T.id");
    
    InputHandler firstEventHandler = siddhiManager.getInputHandler("firstStream");
    InputHandler secondEventHandler = siddhiManager.getInputHandler("secondStream");
    InputHandler thirdEventHandler = siddhiManager.getInputHandler("secondStream");
    
  2. 然后我们可以将事件发送给适当的处理程序。我想用版本3.0.4做同样的事情

    1. 使用Siddhi 3.0.4整个定义定义为

      String executionPlan1 =“define stream ..”+                 “@info(name ='query')”+                 “来自...”;

      ExecutionPlanRuntime executionPlanRuntime1 = 
                      siddhiManager.createExecutionPlanRuntime(executionPlan1);
      
    2. 所以我尝试创建多个ExecutionPlanRuntime&每个都有自己的流定义,但它没有用。 我们还需要定义midStream吗?

      1. 任何人都可以建议正确的方法来向SiddhiManager添加多个查询,以便像我在第一点中提到的那样实现我们能做的事情。?
      2. 谢谢&此致

1 个答案:

答案 0 :(得分:1)

是的,您可以这样做..请检查this参考..它显示了如何获取多个流的输入处理程序并发布事件..

请注意,您不必在此处创建多个executionPlanRuntimes ..也不需要定义中间流..

如果您想从中间流中获取事件,那么您只想创建像this这样的流回调。