我想阻止同一个事件(具有相同的标题),输入两次到inOrg流。所以我用了一个“第一个独特的”窗口。但在某种程度上,这会导致内存不足。我想清理第一个唯一的窗口,如果它包含超过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;发布于 2016-09-05 06:41:22
拉明杜
不幸的是,没有像FirstUniqueQindow那样的直接配置。
之所以会发生这种情况,是因为您发送了大量无法保存在内存中的单元。如果uniques的数量没有无限增长,那么您可以尝试的一个简单的选择就是增加JVM内存。对于打开的CEP_HOME/bin/wso2server.sh,并相应地编辑JVM内存参数。
例:-Xms2048m -Xmx4096m -XX:MaxPermSize=1024m \
但如果你仍然想清除唯一的窗口,这意味着你只需要保持最新的1000个独特的事件,恐怕没有直接的方式。您需要改进当前的implementation1来支持这一点。这样的特性是鼠标所拥有的,并且最受欢迎!!如果您愿意投稿,发送一封邮件到dev@wso2.org,我们可以在那里继续讨论。
https://stackoverflow.com/questions/39324221
复制相似问题