私はこの基本的なPOCコードを持っています。私はイベントが公開されているのを見ることができますが、リスナーには何の警告も出ません。 以下のコードでは、pattern1またはpattern2のいずれのステートメントにも警告がありません。 設定のsetInternalTimerEnabledはデフォルトではTrueですが、コードでTrueを設定しようとしましたが、同じ問題です。 何か不足していますか? 何か手がかりが本当に役に立ちます。エスパパターンタイマー:interval()が動作しません
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 +
'}';
}
}
作品罰金。これを実行するには、投稿したコードが不完全なので、私は空のTradeEventを定義しました。 – user3613754
@ user3613754もう一度やり直しましたが、文のコールバックにヒットしたことはありません。残りのコードを追加して短縮しました。どんな助け? – impossible
普通のJavaアプリケーションでは実行していない可能性があります。したがって、コンソール出力が表示されません。 – user650839