使用 Siddhi 3.0.3 作为 Java 库。
我通过扩展类开发了自定义聚合函数,并且在调用方法AttributeAggregator
后我看到了一些奇怪的行为。processRemove()
当processRemove()
被调用时,我删除该值并返回新的聚合结果。但是,结果处理程序返回的事件仍在接收旧值。但是,processAdd()
工作正常。经过一些调试,我注意到在每次调用 之后processAdd()
,结果事件都包含上次调用返回的对象processAdd()
。但是,在调用 之后processRemove()
,该事件包含与之前相同的对象(来自 lastprocessAdd()
的对象),而不是返回的最后一个对象processRemove()
。
如果我维护一个集合,从其中添加删除并始终返回相同的集合对象,那么一切都很好。但是对于返回数值的聚合函数,每个processAdd()
/processRemove()
返回一个 boxed Long
,它不会被 return from 替换processRemove()
。
我还注意到使用内置聚合函数的相同行为count()
。