java - Esper 基于客户的查询非常适合多个客户

标签 java esper complex-event-processing

据我了解,Esper 是使用查询构建的,以区分传入事件中相关的内容和不相关的内容。

我正在考虑使用 Esper,但我不确定它是否适合我的场景。

我的场景:

我需要跟踪大量客户的一些事情。 我每秒将收到大量事件,并且每个事件都需要为特定客户确定进度。

示例一: 假设我卖火柴,因此我卖得很快。 所以我一直有很多交易,我想跟踪每个客户购买了多少场比赛。 当顾客购买了 10 根火柴时,我希望他能获得一个免费的火柴盒。 因此,对于这个简单的例子,我通常会说,不要使用 Esper。

但随着情况的发展,问题可能是,客户购买的第 10 场比赛应该获得一个免费盒子,此后每购买 3 场比赛,他将获得 2 场比赛,并获得一场奖励。

购买 50 根火柴后,他将获得一个 XL 号火柴盒,里面装满了火柴。

依此类推,多个规则相互堆叠。

我对埃斯珀如何解决这个问题的猜测:

因此,我认为在 Esper 中应该如何完成此操作,即在运行时为每个客户创建一个查询。但由于我有 2,000,000 名客户,因此我售出的每场比赛的查询量都会以极快的速度增长。 (也许我误解了 Esper 的工作原理?)

现在我只剩下问题了......

随着查询的增加,Esper 性能下降了多少? 是否可以让 Esper 在客户级别进行计算,而无需创建特定于客户的查询?

我还听说 Esper 有时缺乏线程和稳定性,有人遇到过这样的问题吗?

总的来说,我对 Esper 还很陌生,而且可能它根本不是我想要的。或者也许我只是误解了 Esper 的用法。 :)

感谢您的阅读!

最佳答案

我是艾斯珀的队长。 Esper 团队很乐意听到稳定性或线程问题。我们有大量生产应用程序在许多大公司中运行 Esper/EsperHA,没有出现任何问题。我们始终热衷于进一步改进产品。

性能下降的程度取决于查询、配置、线程的类型以及 CPU/内存等。是的,计算可以按客户运行,例如分组和其他结构。

关于java - Esper 基于客户的查询非常适合多个客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13877913/

相关文章:

java - 如何修改并检查是否在 java-8 中修改?

java - Android 卡牌游戏 Random()

java - Esper XML dom 文档错误

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

java - Esper 部署错误 : invalid return type for static method, 需要 Java 类

java - 使用 TableView.CONSTRAINED_RESIZE_POLICY 时 TableView header 宽度错误

java - 原点动画android

java - 事件来到 Esper Engine 后阅读 Mysql 数据库?

java - 如何在Esper中输出最后5个最大值?