他のいくつかのシステムに接続し、イベントをストリームにプッシュするアプリケーションがあります。各コネクタは、ステータスの変化に応じてステータス メッセージも送信します。ステータスが少し前に送信された場合でも、各コネクタに送信された最後のステータスを表示する 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
エスパー初心者です。私は通常のタイム ウィンドウ クエリは苦手ではありませんが、最後のイベントを長時間保持するのは困惑しています。コネクタは数十個しかなく、ステータスが何時間も変わらない可能性がありますが、最後に送信されたステータスを引き続き確認したいと考えています。