这是关于我计划通过flink流处理的特定用例。
将消息发送到flink流处理,流被键入,因此按预期进行分区。然而,每个密钥的每个消息需要被评估直到满足条件,例如,假设有一个银行系统,其中一个帐户的帐户交易(消息)需要按顺序处理,并且不可能不按顺序处理消息,因为它会导致系统状态不一致。在按顺序处理下一条消息之前,系统需要等待处理消息(可能甚至超过2-3天)。如何在flink中实现这一点,而不会阻止任何与其他键相关的消息处理部分?
提前致谢!
答案 0 :(得分:0)
你看过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();
}
});