我们有一个连接到其他几个系统的应用程序,并将事件推送到流中。每个连接器还将在状态更改时发送状态消息。我想有一个esper查询,向我显示每个连接器发送的最后状态,即使该状态是在不久前发送的。我们的bean看起来像这样
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
我是esper的新手。我对正常的时间窗查询并不坏,但是长时间保持最后一个事件让我感到困惑。 只有几十个连接器,它们的状态可能几个小时都没有变化,但我们仍然希望看到最后一个状态发送。
答案 0 :(得分:1)
“std:unique”数据窗口包含每个唯一条件的最后一个事件。 “输出快照”告诉引擎输出数据窗口内容。
选择名称,可用,已连接 来自ConnectorStatus.std:unique(name) 每10秒输出一次快照