我想在单线程中完全使用Esper。我有以下配置:
import java.util.Map;
import java.util.HashMap;
public class Example {
private Map<String, Runnable> handlers;
public Example() {
this.handlers = new HashMap<String, Runnable>();
this.handlers.put("A1", this::a1action);
this.handlers.put("A2", this::a2action);
}
private void a1action() {
System.out.println("Action A1");
}
private void a2action() {
System.out.println("Action A2");
}
public void handleAction(String action) {
Runnable handler = this.handlers.get(action);
if (handler == null) {
System.out.println("No handler for '" + action + "'");
} else {
handler.run();
}
}
public static void main(String[] args) throws Exception {
Example ex = new Example();
ex.handleAction("A1");
ex.handleAction("A2");
ex.handleAction("A3");
}
}
我使用以下方式推送活动:
config.getEngineDefaults().getExecution().setDisableLocking(true);
config.getEngineDefaults().getThreading().setInternalTimerEnabled(false);
config.getEngineDefaults().getThreading().setThreadPoolInbound(false);
config.getEngineDefaults().getThreading().setThreadPoolOutbound(false);
config.getEngineDefaults().getThreading().setThreadPoolRouteExec(false);
epService = EPServiceProviderManager.getProvider(UUID.randomUUID().toString(), config);
我有一个声明,我使用epService.getEPRuntime().route(myEvent);
添加了一个监听器。但是,从不调用侦听器的EPStatement.addListener(UpdateListener)
方法。我还发送计时器事件:
update
据我从文档中了解,epService.getEPRuntime().route(new CurrentTimeEvent(System.currentTimeMillis()));
方法应该直接调用侦听器,但我的route()
方法永远不会被调用。
答案 0 :(得分:0)
将事件发送到Esper的方法是“sendEvent”。 “route”方法供侦听器代码使用,侦听器代码可以使用“route”发送事件以进行处理。