1

我有一个 csv 文件作为输入适配器,我想每秒从 csv 文件发送事件。例如,我有 A1、A2、A3、B1、B2 和 B3。我想在第一秒发送 A1、A2 和 A3,在第二秒发送 B1、B2 和 B3。在此参考http://esper.codehaus.org/esperio-4.0.0/doc/reference/en/html_single/index.html#csv-timer中有关于发送计时器事件的说明。这是否意味着根据 csv 文件中设置的时间戳发送事件?如果属实,如何使用?我已阅读此参考资料,但我不明白如何使用它。如果引用不能用于每秒发送事件,是否有另一种方法来设置事件以便每秒发送一次?

4

1 回答 1

2

除了数据事件之外,您还可以通过发送时间事件来以编程方式控制 esper 引擎中的时钟。

// Esper Configuration
ClassLoader cl = EpnService.class.getClassLoader();
URL configURL = cl.getResource("aem.esper.cfg.xml");
Configuration config = new Configuration();
config.configure(configURL);

// Obtain esper service instance
EPServiceProvider esperSvc_ = EPServiceProviderManager.getProvider("TEST", config);

// Disable internal engine timer (if not already done so in esper config file)
TimerControlEvent controlEvent = new TimerControlEvent(TimerControlEvent.ClockType.CLOCK_EXTERNAL);
esperSvc_.getEPRuntime().sendEvent(controlEvent);

// Set engine time
long timeInMillis = System.currentTimeMillis(); // or use some other time from your data
CurrentTimeEvent timeEvent1 = new CurrentTimeEvent(timeInMillis);
esperSvc_.getEPRuntime().sendEvent(timeEvent1);

// Inject events into engine
Object eventObject1 = new Object();
esperSvc_.getEPRuntime().sendEvent(eventObject1);

// Fast forward engine time
timeInMillis += 1000; // Add 1 second
CurrentTimeEvent timeEvent2 = new CurrentTimeEvent(timeInMillis);
esperSvc_.getEPRuntime().sendEvent(timeEvent2);

// Inject more events into engine
Object eventObject2 = new Object();
esperSvc_.getEPRuntime().sendEvent(eventObject2);
于 2013-08-29T15:50:36.557 回答