如何处理消息而不消息离开队列直至满足条件



这是关于我打算通过Flink流媒体解决的特定用例。

一条消息发送到Flink Stream处理,该流是由钥匙键入的,因此按预期进行了分区。但是,每个密钥都需要评估的每条消息,直到满足条件,例如假设有一个银行系统,其中需要按顺序处理帐户的帐户交易(消息),并且不可能处理序列的消息,因为它会导致不一致的系统状态。系统需要等待一条消息(甚至超过2-3天),然后再处理下一条消息。在Flink中如何实现这一点,而不会阻止可以与其他密钥关联的消息处理的任何部分?

预先感谢!

您是否看过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();
    }
});

最新更新