У меня есть этот основной код POC. Я вижу, что события публикуются, но не получают никаких предупреждений в слушателях. В приведенном ниже коде ни один из операторов pattern1 или pattern2 не получает предупреждения. SetInternalTimerEnabled в конфигурации по умолчанию имеет значение True, но я попытался установить его в коде, но проблема остается той же. Я что-то упускаю? Любая подсказка будет действительно полезной.
public class PatternSimpleQue {
public static void main(String args[]) throws InterruptedException {
Configuration configuration = new Configuration();
configuration.addEventType("TestEvent", TestEvent.class);
configuration.getEngineDefaults().getThreading().setInternalTimerEnabled(true);
configuration.getEngineDefaults().getLogging().setEnableTimerDebug(true);
EPServiceProvider engine = EPServiceProviderManager.getDefaultProvider(configuration);
EPRuntime runtime = engine.getEPRuntime();
EPAdministrator admin = engine.getEPAdministrator();
engine.initialize();
String pattern1 = "select * from pattern [every timer:interval(1 sec) -> every TestEvent]";
String pattern2 = "select (select qty from TestEvent.std:lastevent()) as qty from pattern [every timer:interval(1 sec)]";
admin.createEPL(pattern1).addListener((eventBeans, eventBeen1) -> {
System.out.println("In event S3");
try {
for (EventBean anEventBean : eventBeans) {
System.out.println("****S3**** Pattern bean -> " + anEventBean.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
});
admin.createEPL(pattern2).addListener((eventBeans, eventBeen1) -> {
System.out.println("In event S4");
try {
for (EventBean anEventBean : eventBeans) {
System.out.println("--S4--Pattern bean -> " + " :: " + anEventBean.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
});
while (true) {
sendEvent(runtime, new TestEvent(String.valueOf(new Random().nextInt(100)), 10, 1));
sendEvent(runtime, new TestEvent(String.valueOf(new Random().nextInt(100)), 20, -1));
Thread.sleep(5000);
}
}
private static void sendEvent(EPRuntime runtime, TestEvent testEvent) {
System.out.println("\n-- New event: " + testEvent);
runtime.sendEvent(testEvent);
}
}
public class TestEvent {
private String instanceId;
private int qty;
private int side;
public String getInstanceId() {
return instanceId;
}
public int getQty() {
return qty;
}
public int getSide() {
return side;
}
public TestEvent(String instanceId, int qty, int side) {
this.instanceId = instanceId;
this.qty = qty;
this.side = side;
}
@Override
public String toString() {
return "TestEvent{" +
"instanceId='" + instanceId + '\'' +
", qty=" + qty +
", side=" + side +
'}';
}
}