問題タブ [esper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - エスパー+ソケットからスタート
私はエスパーの初心者で、助けてもらいたいです。私はすでに CSV ファイルで Esper を使用することができましたが、ソケットを介して送信されるイベントとして Java オブジェクトを使用する必要があり、インターネット上でガイドとして使用できる簡単な例を見つけることができません。
それらに基づく簡単な例はありますか?
とにかく、私が作ろうとしているコードをここに置いておきます。実行しても何も起こりません。ソケット接続が機能していないようです。
サーバー クラス (イベント クラスも含まれます)。イベントを送信することになっています:
そしてエスパー系クラス。
誰かが私を助けようとするのに時間がかかる場合は、事前にどうもありがとう.
esper - Esper - パターンが続くイベントのランダムなシーケンスを処理 -->
InventoryEvent(Order) と InventoryEvent(Cancel) の 2 種類のイベントがあります。6 秒以内にキャンセル イベントが続かない注文イベントを追跡したいと考えています。これは使用されているクエリです
時間間隔は 6 秒で、注文イベントとキャンセル イベントは共通のメッセージ キー (注文 ID) で結合されます。
これは、以下のようにほとんどの場合非常にうまく機能します
- 注文イベント (id1) --> キャンセル イベント (id1) >6 秒
- 注文イベント (id1) --> キャンセル イベント (id1) <6 秒
- イベント(id1)を注文しない --> 6秒以内にイベントをキャンセル
- 複数の注文イベントの後にキャンセル イベントが続く
現在、注文イベントとキャンセル イベントが発生する順序を保証できないシナリオがあります。だから私たちはケースを持っています
- OE(id1) -->( 6秒) OE(id2) -->(6秒) CE(id1) -->(6秒) CE(id2).
基本的に、2 つの注文イベントの後に、6 秒間隔で 2 つのキャンセル イベントが続きます。これも機能します。ここで、2 次イベントの時間を 6 秒ではなく 4 秒に変更します。
- OE(id1) -->( 4秒) OE(id2) -->(6秒) CE(id1) -->(6秒) CE(id2).
2 次イベントでは失敗しません。クエリに関して何が欠けているのかわかりません。
誰かが理由を知っていますか?
java - Esper-データウィンドウにベースイベントが存在しない場合にデルタイベントをキャッチします
名前付きウィンドウがあるとしましょう:
ここTestEventで、RevisionEvent、およびTestEventBaseは、それぞれTestEventDeltaのベースイベントとデルタイベントで定義されTestEventます。ここでの鍵はですFieldA。
現在、ウィンドウにベースイベントのないデルタイベントがある場合、Esperはこのデルタイベントをサイレントに破棄しているように見えます。したがって、たとえば、デルタイベントがベースイベントの前に来る場合、デルタは破棄されるため、ウィンドウ内の行の状態はベースイベントのみのようになります。
私の質問は、たとえば、これが発生したときに特別な処理を行うために、ウィンドウに入ることができない場合にデルタイベントをキャッチする方法はありますか?
アプリケーションでメッセージを失わないようにする必要があり、Esperが他のメッセージではなく一部のメッセージを黙って破棄している場合、イベントがウィンドウに入ったことを100%確実にするにはどうすればよいですか?
よろしくお願いします!
esper - EsperEPLのleftouterが他のストリームへの転送に参加
CEPのアプリケーションニーズに合わせてESPERを実装しました。EPLを使用しているときに、次のような特定のシナリオに遭遇しました。
2つのイベントを左外部結合と組み合わせて、最初の各イベントがステートメントをトリガーでき、特定のプロパティを含む2番目のストリームのイベントのみが発生するようにしました。いくつかのフィールドに基づいて一意のデータを格納するためのビューを作成しました。私のEPLは
構成ファイルのCombinedEventdataTypeにjava.util.Mapタイプを使用しています
次に、テストシナリオを検討します
- IDが異なるが同じ名前のタイプT1の2つのイベントがシステムに入力されました
- タイプT2の1つのイベントがシステムに入力されます
ビュー仕様により、タイプT1の両方のイベントがビューに存在し、タイプT2のイベントがシステムに入ると、タイプEvent BeanのNewDataパラメーターにはT1の両方のイベントが含まれます(コードでイベントリスナーを使用していた場合)が、最初のEPLステートメントとして'StmtGroupingEvent'に対してタイプT2のイベントを予期していたが、代わりにイベントBeanを検出したため、2番目のステートメントに挿入するように指定します。タイプが一致しないエラーを検出します。
そのため、EPLで配列型のデータを処理する必要があります。これは面倒です。
一方、シナリオが次の場合:
- タイプT1の1つのイベントのみがシステムに入力されます。
- タイプT2の1つのイベントがシステムに入力されます。
このシナリオでは、イベントBeanがタイプT2にタイプキャストされたため、エラーは発生しません。
だから私にこれを行う別の方法を提案してください。
ありがとう
esper - イベントカウントを制御するesper
ストリームを結合するために esper を使用しました:
シナリオを考えてみましょう:
1. 2 つの取引がシステムに入力されました
2. 価格が到着し
ました このシナリオでは、ストリームをグループ化すると、取引ごとに 2 つの出力が生成されます。また、これにより、最終出力から 2 つのイベントがトリガーされます。イベント数が増加すると、出力イベント数も増加します。
ID - 03
シンボル - GOOG
数量 - 300
の取引がシステムに入力されると、ID ごとに %ageMV も変更されるため、3 つの新しいイベントもトリガーされます。イベントの数が増えると、UI での処理が難しくなります。
だから私の質問は -これを行う標準的な方法はありますか?
rule-engine - カスタム ルール エンジンの esper
ESPER を使用してルール エンジンを実装する必要があり
ます。そのためには、ルールのクエリを準備する必要があります (他に最適化された方法があれば、提案してください)。ルールは実行時に宣言可能であると同時に変更可能でなければなりません。
また、ルールを定義するための UI を作成する必要があります。
これを行うためのより良い最適化された方法を提案してください。
例:
実行時にさらにいくつかのルールを定義できます。
java - 別の epl ファイルの Esper 式
式を他の EPL ファイルに配布する方法は?
試してみましたが、確認する必要がある2つの問題があります。
1. EPL ファイルに 'Expression' のみを含めることはできません ('Unexpected end' エラー)
2. 別の EPL ファイルで定義された式にアクセスすると、'not found' エラーが発生します。
ここに私の試みがあります:
//epl1.epl
//epl2.epl
私はネットビーンズを使用しています。
eplで単一行関数を作成する方法
を取得すると便利ですか?
java - エスパーウィンドウの使用:ウィンドウを離れるイベントに基づく再計算
私はこのようなものが必要です。
w1という名前のwindowから別のイベントに挿入します
しかし、3 番目のイベントは、自動的に派生イベントの再計算をトリガーできませんでした。
4番目のイベントの到着がトリガーされ、必要に応じて出力が得られます。
それを行う標準的な方法はありますか?
新しいイベントがウィンドウに到着するか、ウィンドウを離れるかの合計金額を計算したい。
java - EPLを使用した一連のイベントの追跡
私は、ユーザーが特定の時間枠で特定のページのセットを特定の順序で閲覧するたびに検出できるJavaベースのWebサーバーモニターアプリケーションを作成しています。この目的のために、私はエスパーライブラリーを使用しています。クエリの最適な定式化について疑問があります。
最初に、Webサーバーに到達するHTTPリクエストのすべての情報を格納するために使用される「Access」オブジェクトを宣言しました。サーバーに新しい要求が発行されるたびに、新しいAccessオブジェクトがインスタンス化され、イベントとしてEPL処理コアに送信されます。
ページA、ページB、次にページCを閲覧するすべてのユーザーを追跡したいとします。このようなケースに対処するための最適なアプローチはどれですか。次の例のように、遷移ごとに1つずつ、複数の結合を実行する必要がありますか?
esper - 許可処理のための Esper コンテキストの使用
次のように、EPL クエリでさまざまなユーザーの表示権限を設定したいと考えています。
コンテキストがこれを行うと思いますが、イベントの流れとコンテキストの構成を合理化するための助けが必要です。
したがって、ビューのグループに基づいてコンテキスト パーティションを作成する必要があります。そのような
すべての計算はそれらに基づいて行うことができます。ご覧のとおり、コンテキストの分割キーは単一または二重のプロパティではなく、基本的に同じプロパティのグループです。だから私は次のように書くことはできません