【问题标题】:Drools Fusion Event Processing LRU evictionDrools Fusion 事件处理 LRU 驱逐
【发布时间】:2017-09-19 14:08:42
【问题描述】:

我正在使用 Drools Fusion 处理数百万用户的大规模事件。

由于事件量很大,如果我继续在 kie 会话中添加传入事件,将导致内存不足错误。 每个事件都与用户相关联。是否可以根据用户的 LRU 策略从会话中驱逐事件?

任何示例代码都会有所帮助。

谢谢

【问题讨论】:

    标签: drools drools-fusion drools-kie-server


    【解决方案1】:

    我认为您可以编写一些规则,根据用户的 LRU 策略从工作内存中删除事件。

    例如类似于 if 事件中包含策略的内容

    rule "retract event"
    when 
        User($userPolicy: policy == somePolicy)
        $event: Event(policy == $userPolicy)
    then
        delete($event);
    end    
    

    【讨论】:

    • 何时评估策略,比如我可以在每个事件上设置检查工作内存大小,如果大小>阈值 - 删除比配置时间更早的事件。我可以根据(现在插入时间)获取过滤器事件吗?它的复杂性或性能影响是什么?
    • 您的意思是何时评估此规则?如果是这样,那么它在火灾期间被评估,就像所有以前的规则一样。要处理连续火灾,您可以使用 fireUntilHalt() 方法。请在此处查看文档docs.jboss.org/drools/release/7.3.0.Final/drools-docs/…。嗯,我在想如果您需要删除最旧的事件,设置事件到期也可能对您有所帮助。在此处查看文档:docs.jboss.org/drools/release/7.3.0.Final/drools-docs/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2016-06-20
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 2015-08-10
    相关资源
    最近更新 更多