0

他のいくつかのシステムに接続し、イベントをストリームにプッシュするアプリケーションがあります。各コネクタは、ステータスの変化に応じてステータス メッセージも送信します。ステータスが少し前に送信された場合でも、各コネクタに送信された最後のステータスを表示する esper クエリが必要です。私たちの豆はこのように見えます

public class ConnectorStatus
{
    private final String name;
    private final boolean available;
    private final boolean connected;

    public ConnectorStatus(String name, boolean available, boolean connected)
    {
        this.name = name;
        this.available = available;
        this.connected = connected;
    }

    public String getName() { return name; }
    public boolean getAvailable() { return available; }
    public boolean getConnected() { return connected; }
}

次の esper クエリを試しましたが、名前ごとに最初のステータス メッセージしか返されないようです。

select name, available, connected
from ConnectorStatus.std:groupwin(name).std:lastevent()
output every 10 sec

エスパー初心者です。私は通常のタイム ウィンドウ クエリは苦手ではありませんが、最後のイベントを長時間保持するのは困惑しています。コネクタは数十個しかなく、ステータスが何時間も変わらない可能性がありますが、最後に送信されたステータスを引き続き確認したいと考えています。

4

1 に答える 1

1

「std:unique」データ ウィンドウは、一意の基準ごとに最後のイベントを保持します。「出力スナップショット」は、データ ウィンドウの内容を出力するようにエンジンに指示します。

ConnectorStatus.std:unique(name) 出力スナップショットから 10 秒ごとに接続されている、使用可能な名前を選択します

于 2013-08-07T15:41:50.090 に答える