了解siddhi快照概念

时间:2017-05-24 12:12:37

标签: wso2 buffer complex-event-processing siddhi wso2mb

我有查询和执行计划,我想拍摄快照,以便我可以在接收方恢复它并再次开始执行它。

  1. 应该向接收方发送什么格式?
  2. 如何在接收方恢复?
  3. 以下是我从Siddhi存储库中获取的一些代码。

     SiddhiManager siddhiManager = new SiddhiManager();
        String query =
                "define stream inStream(meta_roomNumber int,meta_temperature double);" +
                        "from inStream#window(10)[meta_temperature > 50]\n" +
                        "select *" +
                        "insert into outStream;";
    
        ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(query);
    
        executionPlanRuntime.start();
        SiddhiContext siddhicontext = new SiddhiContext();
    
        context.setSiddhiContext(siddhicontext);
        context.setSnapshotService(new SnapshotService(context));
        executionPlanRuntime.snapshot();
    

1 个答案:

答案 0 :(得分:1)

您可以使用PersistenceStore来保存执行计划的状态(快照),并在以后恢复。请参阅以下PersistenceTestCase以了解其用法。即;

    // Create executionPlanRuntime
    ExecutionPlanRuntime executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(executionPlan);

    // Register Callbacks, InputHandlers
    executionPlanRuntime.addCallback("query1", queryCallback);
    stream1 = executionPlanRuntime.getInputHandler("Stream1");

    // Start executionPlanRuntime
    executionPlanRuntime.start();

    // Send events
    stream1.send(new Object[]{"WSO2", 25.6f, 100});
    Thread.sleep(100);
    stream1.send(new Object[]{"GOOG", 47.6f, 100});
    Thread.sleep(100);

    // Persist the state
    executionPlanRuntime.persist();

    // Shutdown the running execution plan
    executionPlanRuntime.shutdown();

    // Create new executionPlanRuntime
    executionPlanRuntime = siddhiManager.createExecutionPlanRuntime(executionPlan);

    // Register Callbacks, InputHandlers
    executionPlanRuntime.addCallback("query1", queryCallback);
    stream1 = executionPlanRuntime.getInputHandler("Stream1");

    // Start executionPlanRuntime
    executionPlanRuntime.start();

    // Restore to previously persisted state
    executionPlanRuntime.restoreLastRevision();