Esper系列(七)数据缓存、外部事件应用(静态方法)

LRU Cache

功能:最近最少使用策略。


数据库查询缓存应用配置:

<database-reference name="mydb">
... configure data source or driver manager settings...
    <lru-cache size="1000"/>
</database-reference>

 

方法查询缓存配置:

<method-reference class-name="MyFromClauseWebServiceLib">
  <lru-cache size="1000"/>
</method-reference> 

 

Expire Time Cache

功能:通过配置设置查询结果的存活期,并定期清理过期的查询结果。

数据库查询缓存应用配置:

<database-reference name="mydb">
... configure data source or driver manager settings...
    <expiry-time-cache max-age-seconds="60" purge-interval-seconds="120" />
</database-reference>

 

方法查询缓存配置:

<method-reference class-name="com.mycompany.MyFromClauseLookupLib">
  <expiry-time-cache max-age-seconds="10" purge-interval-seconds="10" ref-type="weak"/>
</method-reference>

 

例子:

文件:event.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<esper-configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.espertech.com/schema/esper"
    xsi:noNamespaceSchemaLocation="esper-configuration-5-0.xsd">
    
    <auto-import import-name = "cn.chenx.esper.xml.MyEvent" />
    
    <method-reference class-name="MyEvent">
10            <lru-cache size="1000"/>
11      </method-reference> 
12     
13  </esper-configuration>

文件名:orderMainTest.java

// 添加配置(包所在路劲),方面后面的引用自动添加包名前缀
Configuration config = new Configuration();
config.addEventTypeAutoName("cn.chenx.esper.xml");
URL url = orderMainTest.class.getResource("event.xml");
config.configure(url);
 
EPServiceProvider epServiceProvider = EPServiceProviderManager
        .getDefaultProvider(config);
EPAdministrator epAdmin = epServiceProvider.getEPAdministrator();
10   
11  String epsql = "select me.key as result from orderEvent as oe,method:MyEvent.getEvent(oe.salary) as me  ";

说明:

event.xml文件中的class-name="MyEvent",这里的MyEvent就是事件定义类。

外部事件应用(静态方法)

Joining Method Invocation Results

格式:

method:class_name.method_name[(parameter_expressions)]

说明:

method:固定关键字,class_name:类名,method_name:类中的静态方法,parameter_expressions:静态方法中的参数。

功能:

通过外部的静态方法构建事件源,需注意的是要结合其它事件使用。

应用场景:对数据库中的数据按条件查询等。

例子:

文件名:MyEvent.java

public class MyEvent {
   
    public static orderBean getEvent(int salary){
        orderBean bean = new orderBean();
       
        if ((salary % 2) == 0){
            bean.setKey("chenx1");
            bean.setValue(111);
        }else {
10              bean.setKey("chenx2");
11              bean.setValue(222);
12          }
13          return bean;
14      }   
15  }

文件名:orderMainTest

// 添加配置(包所在路劲),方面后面的引用自动添加包名前缀
Configuration config = new Configuration();
config.addEventTypeAutoName("cn.chenx.esper.method");
       
//
EPServiceProvider epServiceProvider = EPServiceProviderManager
        .getDefaultProvider(config);
EPAdministrator epAdmin = epServiceProvider.getEPAdministrator();
       
10  ConfigurationOperations configOper = epAdmin.getConfiguration();
11  configOper.addImport(MyEvent.class);
12         
13  String epsql = "select me.key as result from orderEvent as oe,method:MyEvent.getEvent(oe.salary) as me  ";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值