我有一个用例,系统事务在一段时间内发生/完成,并且有多个"建立"脚步。流程中的每个步骤都会生成一个或多个事件(每个事务最多22个事件)。事务中的所有事件都具有共享且唯一(uuid)的相关ID。
一个例子是事务X:将具有EventA,EventB,EventC ......的构建块,并且所有都标记有唯一的相关标识符。
此处的最终目标是从持久保存RDBMS中的所有单独事件并查询统一视图(大量连接)到:能够仅保留1个包含事务记录,该记录将合并事务中每个步骤的属性。
到目前为止,我的研究引导我阅读有关Esper(此处为Java堆栈)和WSo2 / WS02 CEP的内容。在我的情况下,每个事件都被提交/排入JMS,我想知道是否可以使用像WS02 / WSo2 CEP这样的解决方案来整合JMS事件/消息(流)并基于相关ID(和最长时间限制30分钟)生成一个合并记录并将其发送到JMS以最终保留在DB中。
由于我仍处于研究模式,我想知道我是否正在寻求解决方案的正确途径?
有人使用WS02 / WSo2 CEP实现了这样的事情,还是过度杀戮?其他建议?
由于 -S
答案 0 :(得分:0)
您可以使用WSO2 CEP将其集成到JMS以发送和接收事件,并使用Siddhi Pattern查询[1]来合并来自同一事务的事件。
30分钟是一个合理的时间段,建议使用一些测试数据集测试场景,因为您必须在服务器中需要足够的内存来处理这些状态。这在很大程度上取决于事件发生率。
AFAIK这不是企业部署中的过度杀戮。
答案 1 :(得分:0)
我建议你试试esper patterns。对于基于multievent的系统,其中要收集某些特定信息,模式以最佳方式工作。
示例示例如下:
select * from TemperatureEvent
match_recognize (
measures A as temp1, B as temp2, C as temp3, D as temp4
pattern (A B C D)
define
A as A.temperature > 100,
B as (A.temperature < B.value),
C as (B.temperature < C.value),
D as (C.temperature < D.value) and D.value >
(A.value * 1.5))
在这里,我们有4个事件和5个涉及这些事件的条件。示例取自demo project.