FlinkCEP:我可以参考较早的事件来定义后续匹配吗?
FlinkCEP: Can I reference an earlier event to define a subsequent match?
这是一个简单的例子:
val pattern =
Pattern.begin[Event]("start").where(_.getId == 42).
next("middle").subtype(classOf[SubEvent]).where(x => x.getVolume == **first event matched**.getVolume) ...
本质上第二个事件("middle")需要访问第一个事件("start")的状态。是否可以在不需要外部状态的情况下在 FlinkCEP 中执行此操作?
当然可以。您可以在 Context 的帮助下获取特定模式的事件。
new IterativeCondition<Event>() {
private static final long serialVersionUID = 8061969839441121955L;
@Override
public boolean filter(Event value, IterativeCondition.Context<Event> ctx) throws Exception {
double sum = 0.0;
for (Event e : ctx.getEventsForPattern("middle")) {
sum += e.getPrice();
}
return sum > 5.0;
}
}
这是一个简单的例子:
val pattern =
Pattern.begin[Event]("start").where(_.getId == 42).
next("middle").subtype(classOf[SubEvent]).where(x => x.getVolume == **first event matched**.getVolume) ...
本质上第二个事件("middle")需要访问第一个事件("start")的状态。是否可以在不需要外部状态的情况下在 FlinkCEP 中执行此操作?
当然可以。您可以在 Context 的帮助下获取特定模式的事件。
new IterativeCondition<Event>() {
private static final long serialVersionUID = 8061969839441121955L;
@Override
public boolean filter(Event value, IterativeCondition.Context<Event> ctx) throws Exception {
double sum = 0.0;
for (Event e : ctx.getEventsForPattern("middle")) {
sum += e.getPrice();
}
return sum > 5.0;
}
}