問題タブ [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.
architecture - 複雑なイベントの処理
システムに個別のイベントのストリームが入ってきて、各イベントの内容に基づいてルールを適用する必要があります。また、これらのストリーム イベントに複雑なイベント処理を適用したいと考えています。
制約 1. これらのルールはユーザーが提供し、動的に変更されます。2. ルールが適用されるたびにシステムを再起動したくありません。3. HA 4. 成熟したオープン ソース ソリューションのみ
考えられる方法.. 1. ストーム ボルト内でエスパー CEP を
実行する 2. ストーム ボルト内でドロールを実行する
これは、単一のイベント ルールの処理だけでなく、複雑なイベントの処理も行いますか? ルールを変更すると、ストームを再起動する必要がありますか?
ルールをストーム ボルトに動的に挿入できますか?
その他のソリューション? スパーク?
io - 特定のネットワーク アダプタへの EsperIOSocketAdapter バインディング
私は Esper を初めて使用し、それを使用してネットワーク経由でイベント データを送信することに興味があるため、EsperIOSocketAdapterに興味があります。
SocketAdapter は特定のポートにしかバインドできないようですが、ネットワーク アダプターが 1 つしかない場合は問題ありませんが、IP アドレスを指定して特定のネットワーク アダプターにもバインドするように SocketAdapter を構成することはできますか?
esper - エスパー発生エピソード
Esper を使用してイベントのエピソードを生成したいと考えています。各時間帯のロボットの動きの変化を検出しようとしていますが、どのように実装するのが最適なのか疑問に思っていました。
イベントからエピソードを生成するためのルールは次のようになります。
- ロボットの新しいイベント時間 (例: 7 秒、ロボット A) が、同じロボットの最新のイベント (例: 3 秒、ロボット A)よりも 3 秒以上長い場合、新しいイベントは新しいエピソードに属します。
- 各エピソードは1 つのロボットのみを表す必要があります (例: 2 秒、ロボット A と 3 秒、ロボット B は 2 つのエピソードを出力する必要があります)。
入力データ:
出力データは次のようになります。
入力データ:
出力データは次のようになります。
提案を提供してください。各ロボットに 1 つずつ、複数のリスナーを使用してエピソードを作成しようとしましたが、動作しますが、単一の EPL ステートメントを使用してそれを実行しようとしています。私は試しwin:time_accum(3sec) group by robotましたが、2番目の出力例:
イベントが発生するたびにタイム ウィンドウがシフトされるため、システムはイベント 4 がイベント 3 のために 3 秒未満であると認識します。ロボットごとに固有のタイム ウィンドウを作成するにはどうすればよいですか?
ご提案いただきありがとうございます。どんな助けでも大歓迎です。
esper - Esper Compare With Previous イベント
私は Esper を初めて使用するので、単純な問題を解決できません。私がしなければならないことは、バーの現在の終値と前のバーの終値の差を取得することです。エスパーでこの問題にアプローチする最も賢い方法は何ですか?
結果= CurrentBar.Close - PreviousBar.Close.
編集:
次のコードを使用していますが、これは機能しますか?
rabbitmq - エスパーは後の段階で新しいステートメントを受け入れません
ヘッダーにあるように、Esper と RabbitMQ を組み合わせてプロジェクトをビルドする際に問題があります。したがって、Esperio (バージョン 4.10) の amqp アダプターを使用する必要があります。
マニュアルの基本から始めましたが、何らかの理由でクエリが適切に評価されていません。amqp アダプターの宣言で「EventBusSink」と「EventBusSource」を切り替える必要があることはすでにわかっています (「出力ストリームが定義されていません」などのビルド エラー)。
次のように Spring AMQP を使用して、Rabbitmq に 2 つのキューを設定しています。
Esper と amqp アダプターを次のように構成します。
構成を設定し、1 つのメソッド (コンストラクターまたは init メソッド) で複数のステートメントを発行すると、すべてが正常に機能します。しかし、最初にカスタム構成 (アダプターを使用) で esper を開始し、後のフェーズでステートメントを発行する (そして、後でそれらのステートメントに一致するイベントを送信する) と、ステートメントと一致するものは何もありませんでした。それにもかかわらず、同じ esperProvider (コードでは epService) を使用します。ステートメントを発行するメソッドで構成部分を複製すると、アダプターが既に存在するという例外が発生します。
クエリの例は次のとおりです。
そして送信されたイベント:
AEsper には、実行時にステートメントを公開するための制限はありますか?
ありがとう!
ジャナ
java - Esper Alert クエリがトリガーされない
Esper を使用して、発生した esper クエリに基づいてアラート メッセージを生成しています。
Map を Java オブジェクトとして使用して、すべてのログ メッセージをバインドしています。これは、外部の esper config xml ファイルで次のように定義されています。
キューからログ メッセージを読み取っています。トリガーを取得するイベントの要件は次のとおりです。 1. タイプ = "b2c_access" のログ メッセージ内の応答フィールドが = 302 で、1 分間にこの応答コードを含むログ メッセージの数が > 10 の場合、イベントを発生させます。
私は次のEPLを持っています
しかし、ログ メッセージに 10 を超えるメッセージが含まれていても、2 分間の期間はイベントが発生せず、例外も発生しません。そこで、次のように EPL をシンプルにしようとしました。
それでも、この上記のクエリは起動されません。
私が探しているものと一致する例が Esper の公式サイトで見つかりません。
oracle - CEP --- Oracle EPL と ESPER が提供するものとの間に大きな違いはありますか?
私は CEP が初めてで、ESPER で遊ぶことを検討しています。このトピックについて一般的なグーグル検索を行っていたところ、次のようなクロスがありました。
http://docs.oracle.com/cd/E13157_01/wlevs/docs30/pdf/epl_guide.pdf
そしてこれも:
http://esper.codehaus.org/esper-4.2.0/doc/reference/en/html/
誰かが違いを明確にできますか?写真があったので、Oracle のものを読み始めました... :) しかし、私は Oracle $ を持っていないので、ESPER を使用する可能性があります。
「EPL」に関する限り、OracleとMSの「sql」のような小さな違いがあります...(この最後のステートメントに執着しないでください。それを使用するだけですある種の婉曲表現として。)
esper - ストリームから要素を削除するにはどうすればよいですか
現在、注文オブジェクトがあります。orderId、state、price という 3 つのフィールドがあると想定できます。
注文の有効期間中、状態と約定数量は変化します。フィールドの変更があるたびに、次の方法でそれを esper ランタイムにプッシュします。
SendEvent を介して注文が追加されるたびに、以前の注文オブジェクトとは異なるオブジェクトになります (つまり、参照ではありません)。これは、古い注文オブジェクトがステートメントのストリームに存在しなくなったことを意味します。
以下のようなステートメントは、ストリーム内の注文の最新バージョンでのみ動作するようにします。つまり、概念的には、ストリーム内の各物理注文に対して 1 つの注文オブジェクトのみが存在する必要があります。
古い Order オブジェクトを削除する方法はありますか? 参照を使用して、古い注文オブジェクトを更新してから再度プッシュすることはできますか? 別の方法はありますか??
私は現在使用していますNesper
esper - エスパーで欠落しているイベントを検出する
ソースが 24 時間以上システムにイベントを送信していないことを検出したい状況があります。このパターンが認識されたら、送信元が何かを送信した最後の既知のイベント (数日かもしれません) を取得できるようにしたいと考えています。このチェックを 24 時間ごとに実行してほしい。「ATM」タイプの例に従って、次の非常に単純なコードを思いつきました。
パターンから a.value を選択します [every (time:interval(24 時間) であり、a=Event ではありません)
これは、24 時間が経過し、イベントがない場合に更新リスナーに通知します。しかし、どうすれば事前に知ることができますか? prev または std:lastevent 関数を使用することを考えましたが、選択するデータ ウィンドウが必要で、どこに置くべきかわかりませんでした。
ありがとう