如何清除 CEP window

How to clear a CEP window

我想阻止同一个事件(具有相同的标题)进入 inOrg 流两次。所以我用了一个"first unique"window。但在某些时候,这会给出内存不足的错误。如果第一个唯一 window 包含超过 1000 个事件,我想清除它。我该怎么做?

这是执行计划。

@Plan:name('ExecutionPlan')

@Import('instream:1.0.0')
define stream inOrg (meta_title string, meta_link string,     meta_description string, meta_item string);

@Export('outstream:1.0.0')
define stream out (meta_id int, meta_key string, meta_title string, meta_link string);

@From(eventtable='rdbms', datasource.name='EX_DB', table.name='table')
define table EventTypeTable (meta_id int, meta_key string);

from inOrg#window.firstUnique(meta_title)
select meta_title, meta_link, meta_description, meta_item
insert into in;

from in join EventTypeTable
select meta_id, meta_key, meta_title, meta_link , meta_description, meta_item
insert into StreamTemp;

from StreamTemp [(regex:find(str:lower(meta_key),str:lower(meta_title)) or regex:find(str:lower(meta_key),str:lower(meta_description))) ]
            select meta_id, meta_key, meta_title, meta_link
            insert into out;

拉敏杜,

遗憾的是,没有像 FirstUniqueQindow 这样的直接配置。

发生这种情况是因为您发送了大量无法保存在内存中的唯一值。如果唯一值的数量没有无限增长,您可以尝试的一种简单选择是增加 JVM 内存。为此,打开 CEP_HOME/bin/wso2server.sh 并相应地编辑 JVM 内存参数。

例如:-Xms2048m -Xmx4096m -XX:MaxPermSize=1024m \

但如果你仍然想清除唯一性 window,这意味着你只需要保留最新的 1000 个唯一性事件,恐怕没有直接的方法。您将需要改进当前的实施 [1] 来支持它。这样的功能非常受欢迎!如果您愿意贡献力量,请发送邮件至 dev@wso2.org,我们可以在那里继续讨论。

[1] https://github.com/wso2/siddhi/blob/master/modules/siddhi-core/src/main/java/org/wso2/siddhi/core/query/processor/stream/window/FirstUniqueWindowProcessor.java

目前该功能可用于最近的唯一事件[1]。您可以创建 jira 来跟踪该功能,或者您可以为代码库[2]做出贡献。

[1] https://docs.wso2.com/display/SIDDHIEXTENSIONS/UniqueLength+Window

[2] https://github.com/wso2-extensions/siddhi-window-unique-length