记录apama学习笔记,apama中任何对象都可以理解未一个事件,只要注册了每个对象事件监听,在apama进程接收消息队列中有该对象时,就会进行对象匹配,如果满足条件就会触发一个事件监听。
RPC序列化
apma的rpc通信过程中数据序列化是文本字符串序列化,不是二进制序列化。序列化格式为:packageName + eventName + properties属性。 例如:”QRY_apamax.atmfraud.DetectRepeatedMaxWithdrawals”, 1, “*”, [“600”]。
序列化顺序严格按照事件定义时候的顺序来组织,数据格式也要对应,否则会出现rpc通信过程中事件丢失问题。
工程目录约定
event目录
该目录主要包含apama进程启动的时候预定义的一些事件,实现系统测试、初始化一些系统事件使用。
文件名:后缀名为evt
格式:事件定义全路径(属性定义)
例如:
//预生产的事件列表,按照顺序生产后放入当前correlator的消息队列
com.lehoon.apama.EventC(“C1”)
com.lehoon.apama.EventA(“A1”)
com.lehoon.apama.EventF(“F1”)
dashboards目录
apama本身支持cs应用,apama的client端就是dashboards面板,支持控件拖拽式开发,动态绑定运行时的dataview实例。 缺点就是不支持高分屏、用户体验度不好。
monitor目录
apama的主要逻辑代码存放目录,文件后缀名为mon,类似与java的controller+service,在monitor中可以注册关心的事件处理逻辑代码。
queries目录
该目录存放自定义的queries文件,后缀名为qry。Query是epl程序执行的一个基本单元。 epl另外的执行单元是monitor,一个monitor不能能包括一个query。一个query不能包括一个monitor。
query适用于通过事件来提供大量真实世界信息的应用程序。
apama工具
apama提供了命令行工具去监控事件监听器。apama提供的工具在apama安装目录下的$APAMA_HOME/bin目录下,主要包括:engine_inject, engine_delete, engine_send, engine_receive, engine_watch, engine_inspect, engine_management等。
名称 | 说明 |
---|---|
engine_inject | 将epl文件注入到correlator |
engine_delete | 从correlator删除对象 |
engine_send | 向correlator或者iaf发送apama格式化事件 |
engine_receive | 从correlator或者iaf读取事件并在控制台打印日志 |
engine_watch | 定期轮询correlator运行状态 |
engine_inspect | 检查correlator正在运行的状态 |
engine_management | 可以终止、查看、管理正在运行的correlator状态、及管理组件,比如:适配器、观察代理进程等 |
事件通知方法
apama中事件通知主要分为进程内、异构系统2种,进程内的事件通知使用route,系统间通过send发送事件。
事件都是通过channel名称来区分的,apama由一个默认的channel名称(空字符串)。
默认channel名称 | 说明 | 备注 |
---|---|---|
com.apama.queries | Query的默认通道 | Query不能注册监听的通道,所以只能通过默认的channel获取事件 |
com.apama.input | 进入correlator的所有事件的默认通道。监视器实例无法订阅该通道 | 主要用于诊断、测试、审核 |