java从命名窗口创建和选择
我在本地运行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);
}
# 1 楼答案
命名窗口开始为空,“create window OrderEventWindow.win:keepall()as OrderEvent”只定义命名窗口中的行类型,在您的例子中,它们与OrderEvent的行类型相同。 如果要插入的是“插入到OrderEventWindow select*from OrderEvent”,则需要将所有订单事件插入到指定的窗口中