强制表达式上的esper流输出

强制表达式上的esper流输出,esper,nesper,Esper,Nesper,我有一个esper查询来获取市场数据。看起来像 select * from L1Quote(Symbol='MSFT') 当出现新报价时,将触发此操作。我需要第一个报价/事件来进行一些初始设置。对于每秒触发事件/引号的符号,这没有问题,但对于某些符号,一分钟内都不会获得新的引号事件 假设在设置此表达式之前已发生quote事件。 有没有办法在第一次解析表达式时强制输出?ie有没有办法说,表达式启动时给我最后一个事件?Esper不会在内存中保留旧事件(除非您的EPL使用数据窗口或模式指定)。因此,

我有一个esper查询来获取市场数据。看起来像

select * from L1Quote(Symbol='MSFT')
当出现新报价时,将触发此操作。我需要第一个报价/事件来进行一些初始设置。对于每秒触发事件/引号的符号,这没有问题,但对于某些符号,一分钟内都不会获得新的引号事件

假设在设置此表达式之前已发生quote事件。
有没有办法在第一次解析表达式时强制输出?ie有没有办法说,表达式启动时给我最后一个事件?

Esper不会在内存中保留旧事件(除非您的EPL使用数据窗口或模式指定)。因此,给定您提供的查询,它没有过去的事件。

您只需要创建一个窗口来存储最新的报价,然后对其进行查询

在您的Esper EPL中:

//the L1Quote event definition
create schema L1Quote(Symbol string, ...)

//create a window with the same definition as L1Quote and it retain the latest event by Symbol
create window L1Quotes.std:unique(Symbol) as select * from L1Quote

//insert all incoming quotes into the window we created
insert into L1Quotes select * from L1Quote
您的客户端需要查询窗口并订阅:

//subscribe to quote updates
EPStatement statement = epAdmin.createEPL("select * from L1Quotes(Symbol='MSFT')");
statement.addListener([my listener]);

//get the latest quote
epEngine.executeQuery("select * from L1Quotes(Symbol='MSFT')");