0

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

4

1 回答 1

1

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

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

于 2013-08-07T15:41:50.090 回答