选择组中的最后一个事件

时间:2013-08-05 15:12:34

标签: java esper

我们有一个连接到其他几个系统的应用程序,并将事件推送到流中。每个连接器还将在状态更改时发送状态消息。我想有一个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的新手。我对正常的时间窗查询并不坏,但是长时间保持最后一个事件让我感到困惑。 只有几十个连接器,它们的状态可能几个小时都没有变化,但我们仍然希望看到最后一个状态发送。

1 个答案:

答案 0 :(得分:1)

“std:unique”数据窗口包含每个唯一条件的最后一个事件。 “输出快照”告诉引擎输出数据窗口内容。

选择名称,可用,已连接 来自ConnectorStatus.std:unique(name) 每10秒输出一次快照