如何设置Esper使用单线程

时间:2017-05-05 07:02:02

标签: esper

我想在单线程中完全使用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()方法永远不会被调用。

1 个答案:

答案 0 :(得分:0)

将事件发送到Esper的方法是“sendEvent”。 “route”方法供侦听器代码使用,侦听器代码可以使用“route”发送事件以进行处理。