我在本地运行 Esper,并且我正在(通过 XML)输入一些 EPL 语句 -
<?xml version="1.0" encoding="UTF-8"?>
<Statements>
<Statement>
create window OrderEventWindow.win:keepall() as select * from OrderEvent
</Statement>
<Statement>
@Name("OrderEventsFromWindow")
@Description("Outputs any Order events from the window")
select * from OrderEventWindow
</Statement>
<Statement>
@Name("OrderEventsFromDirect")
@Description("Outputs any Order events from the feed")
select * from OrderEvent
</Statement>
</Statements>
这看起来一切顺利,没有任何错误。然而,现在的问题是,上面名为“OrderEventsFromWindow”的语句似乎没有运行,因为我没有看到任何结果输出(尽管有 OrderEvent 类型的事件传入)。
奇怪的是,另一个语句“OrderEventsFromDirect”按预期工作。
知道我可能做错了什么来解释为什么我的第一个语句没有显示任何输出吗?
*请注意,我的 XML 中的所有语句都会在应用程序启动时输入,如下所示:
for (String stmt : statements) {
EPStatement statement = admin.createEPL(stmt);
statement.addListener(this);
}
最佳答案
命名窗口开始为空,“创建窗口 OrderEventWindow.win:keepall() as OrderEvent”仅定义命名窗口中的行类型,在您的情况下,它们与 OrderEvent 的行类型相同。 如果您想要插入的话,您需要使用“insert into OrderEventWindow select * from OrderEvent”将所有订单事件插入到命名窗口中。
关于java - 创建命名窗口并从中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057480/