这是关于一个特定的用例,我计划通过flink流解决这个问题。
消息被发送到flink流处理,流被键控,从而按照预期进行分区。然而,每个键的每个消息都需要进行评估,直到满足条件,例如,假设有一个银行系统,其中需要按顺序处理帐户的帐户事务(消息),并且不可能不按顺序处理消息,因为这将导致系统状态不一致。系统需要等待消息被处理(甚至可能超过2-3天),然后才能按顺序处理下一条消息。如何在不阻塞任何可以与其他键关联的消息处理部分的情况下在flink中实现这一点?
提前感谢!
发布于 2017-03-15 02:04:10
你看过CEP库了吗?您可以指定如下模式:
Pattern<Event, ?> pattern = Pattern.<Event>begin("firstOfSequence").where(new FilterFunction<Event>() {
private static final long serialVersionUID = 5726188262756267490L;
@Override
public boolean filter(Event value) throws Exception {
return value.isFirstOfSequence();
}
}).followedBy("secondOfSequence").where(new FilterFunction<Event>() {
private static final long serialVersionUID = 5726188262756267490L;
@Override
public boolean filter(Event value) throws Exception {
return value.isSecondOfSequence();
}
});https://stackoverflow.com/questions/42791474
复制相似问题