2017-05-24 12 views
0

私はクエリと実行計画を持っているので、そのスナップショットを撮りたいので、受信側で復元してもう一度実行することができます。siddhiスナップショットの概念を理解する

  1. 受信者にはどのような形式を送信する必要がありますか?
  2. 受信側で復元する方法はありますか?

私は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

あなたは、実行計画の状態(スナップショット)を持続し、後でそれを復元するために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(); 
+0

上記の方法は、ローカルマシンで正常に動作します。私は、ソケットを使ってやっているネットワーク上でスナップショットを送信し、分散環境で動作させる必要があります。 –