内容简介:kaka 是一项服务于 Java 后端的事件领域模型,全局事件通知框架。 kaka-core已移至 https://gitee.com/zkpursuit/kaka-core , 并支持 maven 直接安装。 此次更新主要强化和稳定以下两个功能点: 1、单个事件对应...
kaka 是一项服务于 Java 后端的事件领域模型,全局事件通知框架。
kaka-core已移至 https://gitee.com/zkpursuit/kaka-core , 并支持 maven 直接安装。
此次更新主要强化和稳定以下两个功能点:
1、单个事件对应多个 Command,3.0版本之前仅支持一个 Command 对应多个事件。在此基础上同名事件对应的 Command 新增执行优先级,可依此模拟切面编程,以下代码为模拟切面方法拦截器,获取主体业务执行耗时。
//基于事件模拟切面编程,仅支持Command
sendMessage(new Message("40000"), true);
package kaka.test.unit;
import com.kaka.notice.Command;
import com.kaka.notice.Message;
import com.kaka.notice.annotation.Handler;
/**
* 模拟切面
*/
@Handler(cmd = "40000", type = String.class, priority = 2)
public class SimulateAopCommand extends Command {
@Override
public void execute(Message msg) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Aop业务执行");
}
}
package kaka.test.unit;
import com.kaka.notice.Command;
import com.kaka.notice.IResult;
import com.kaka.notice.Message;
import com.kaka.notice.SyncResult;
import com.kaka.notice.annotation.Handler;
/**
* 模拟切面,执行前
*/
@Handler(cmd = "40000", type = String.class, priority = 1)
public class SimulateAopBeforeCommand extends Command {
@Override
public void execute(Message msg) {
IResult execStartTime = new SyncResult<>(); //中间变量亦可使用 ThreadLocal 存储
execStartTime.set(System.currentTimeMillis());
msg.setResult("execStartTime", execStartTime);
}
}
package kaka.test.unit;
import com.kaka.notice.Command;
import com.kaka.notice.IResult;
import com.kaka.notice.Message;
import com.kaka.notice.annotation.Handler;
/**
* 模拟切面,执行后
*/
@Handler(cmd = "40000", type = String.class, priority = 3)
public class SimulateAopAfterCommand extends Command {
@Override
public void execute(Message msg) {
IResult execStartTime = msg.getResult("execStartTime");
long offset = System.currentTimeMillis() - execStartTime.get();
System.out.println("Aop业务执行耗时:" + offset);
}
}
2、异步回调获取事件处理结果,此功能为同步获取事件处理结果的增强和优化。
sendMessage(new Message("50000", "", (IResult<Object> result) -> {
Class clasz = ((CallbackResult<Object>) result).eventHanderClass;
StringBuilder sb = new StringBuilder("异步回调:\\\\t" + clasz.getTypeName() + "\\\\t");
Object resultObj = result.get();
if (resultObj instanceof Object[]) {
Object[] ps = (Object[]) resultObj;
sb.append(Arrays.toString(ps));
} else {
sb.append(resultObj);
}
System.out.println(sb);
}), true);
以上范例代码均可在源码test中查阅,其中包括常用通用性范例。
以上所述就是小编给大家介绍的《事件领域模型框架kaka基础核心kaka-core更新至4.0稳定版》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 自定义MVC框架-封装模型层
- 智能搜索模型预估框架的建设与实践
- Netty 和 RPC 框架线程模型分析
- 大数据计算框架Spark之内存模型
- golang常见的几种并发模型框架
- 智能搜索模型预估框架Augur的建设与实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Creative Curve
Allen Gannett / Knopf Doubleday Publishing Group / 2018-6-12
Big data entrepreneur Allen Gannett overturns the mythology around creative genius, and reveals the science and secrets behind achieving breakout commercial success in any field. We have been s......一起来看看 《The Creative Curve》 这本书的介绍吧!
