2016-11-30 2 views
0

私は自分のプロジェクトにespertech CEPを実装しましたが、すべて正常に機能しますが、トリガーされたすべてのイベントのリストを表示したいと思います。エスペルテックはこれを許可していますか?espertech CEPでトリガーされたイベントのリストを取得する方法

+0

あなたがこれまで持っているユースケースとEPL文は何ですか?私はそのパターン、集約、またはあなたが答えを行うことができるかどうかによって依存するかもしれないので、私は尋ねています。また、「誘発事象」とは何ですか?その出力イベントまたはイベントが入ってきて、何かをトリガーしていますか? – goodie

+0

私はUpdateListenerを使用して、イベントクエリステートメントで定義したデータストリームに従ってアクションをトリガします。 UpdateListnerは機能しますが、呼び出されるたびにリストが必要です。たとえば、値が1より大きい場合、updatelistenerがトリガーされ、イベント情報が出力されます。今のところ私は単純なイベントについて話しています – user1281678

+0

"聞くたびにリスト"とは、リスナーが呼び出されたときに何らかのログが表示されることを意味します。 – goodie

答えて

0

デフォルトでは、CEPは私が知る限り何も提供していません。

ただし、いつでもHashMap<String, List<EventBean>>を使用して行うことができます。

簡単な例は次のようになります:

HashMap<String, ArrayList<EventBean>> eventsNeeded = new HashMap<String, List<EventBean>>(); 
    Configuration configuration = new Configuration(); 
    configuration.addEventType("Event", IEvent.class); 
    EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(configuration); 
    EPRuntime runtime = engine.getEPRuntime(); 
    EPAdministrator admin = engine.getEPAdministrator(); 
    engine.initialize(); 

    int limit = 30; 
    String query = "Select instanceId, qty from Event where netValue >" + limit; 
    eventsNeeded.put(query, new ArrayList<EventBean>()); 

    admin.createEPL(query).addListener((eventBeans, eventBean1) -> { 
     for (EventBean eventBean : eventBeans) { 
      eventsNeeded.get(query).add(eventBean); 
     } 
    }); 
    sendEvent(runtime, new Event("X", 10, 1, 100, "A")); 
    sendEvent(runtime, new Event("X", 20, -1, 100.0, "A")); 
    sendEvent(runtime, new Event("X", 15, 1, 100.0, "B")); 
    //You can use eventsNeeded here 
関連する問題