过滤器部分中使用的 Siddhi CQEngine

Siddhi CQEngine used within filter section

我的传入事件包含用户 ID 属性。我希望能够根据 CQEngine 的 userId 读取参数值。我是否应该将其实现为 FunctionExecutor 的扩展并像这样使用它:

define stream cseEventStream (userId string, symbol string, price long, volume long);
@info(name = 'query1')
from cseEventStream [price < custom:cache(userId)]
select *
insert into Output

或者是否有更好的方法。问题是在第一次使用 CQEngine 之前我需要用数据初始化它。 FunctionExecutor 的 "start" 方法可能用于此目的?

您可以继续 FunctionExecutor 并在 init()start() 中实现初始化逻辑。每次函数使用都会调用一次。调用顺序是 init() 后跟 start()。但是,根据 API 文档,建议使用 start() 获取处理元素所需的资源。和 stop() 释放获取的资源。