Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Drools Fusion支持持久、长时间运行的事件_Java_Drools_Complex Event Processing_Drools Fusion - Fatal编程技术网

Java Drools Fusion支持持久、长时间运行的事件

Java Drools Fusion支持持久、长时间运行的事件,java,drools,complex-event-processing,drools-fusion,Java,Drools,Complex Event Processing,Drools Fusion,我正在考虑使用以下示例性规则: 若顾客在一年内购买了两种相同的产品,她将免费获得第三种 在最多连续三笔交易中消费超过200美元的客户可获得折扣 当客户停用超过一年时,将生成提醒 当单个订单在最近六个月内大于平均订单值时,将通知主管 …等等,这些只是我脑海中的例子 所有这些规则都可以很容易地用Drools融合表示。然而,在创建了一个原型并查看了文档之后,似乎该产品更适合短期、瞬态事件(股票市场、实时决策) 问题是:是否需要将所有事件存储在内存中?(可能是数百万次非常古老的购买)。此外,Droo

我正在考虑使用以下示例性规则:

  • 若顾客在一年内购买了两种相同的产品,她将免费获得第三种
  • 在最多连续三笔交易中消费超过200美元的客户可获得折扣
  • 当客户停用超过一年时,将生成提醒
  • 当单个订单在最近六个月内大于平均订单值时,将通知主管
  • …等等,这些只是我脑海中的例子
所有这些规则都可以很容易地用Drools融合表示。然而,在创建了一个原型并查看了文档之后,似乎该产品更适合短期、瞬态事件(股票市场、实时决策)

问题是:是否需要将所有事件存储在内存中?(可能是数百万次非常古老的购买)。此外,Drools Fusion是否可以存储事件,以便在服务器重新启动后继续运行?(最好是在数据库中)


我知道Drools Fusion事件只是事实,所以问题可以扩展到:Drools Expert是否可以持久化并延迟加载事实?

您可以做的是在每次为该客户获得新交易时加载每个客户的历史信息。或者定期加载信息以查看非活动客户。 你提到的所有例子在我看来都是事实。显然,您可以将所有内容建模为事件,但正如您所提到的,这将导致您需要将所有内容都存储在内存中。 要回答有关存储/处理数百万个事件的问题,首先需要回答JVM是否支持在内存中存储所有这些对象的问题


干杯

非常感谢。这是否意味着Drools Expert和Drools Fusion都要求所有事实/事件始终在内存中?我认为Drools能够延迟加载事实进行处理,并丢弃不再需要的事实……是的,这意味着您可以对某些事实实施延迟加载,但如果所有事实都在主内存中,引擎显然会工作得更好。对于事件,您具有自动生命周期管理功能。这意味着所有与任何规则不匹配的事件都将被自动丢弃。在expert中,您可以使用逻辑断言删除不再为插入它们的规则备份的事实。