事件领域模型框架kaka基础核心kaka-core更新至4.0稳定版

栏目: 软件资讯 · 发布时间: 4年前

内容简介: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稳定版》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Definitive Guide to MongoDB

The Definitive Guide to MongoDB

Peter Membrey、Wouter Thielen / Apress / 2010-08-26 / USD 44.99

MongoDB, a cross-platform NoSQL database, is the fastest-growing new database in the world. MongoDB provides a rich document orientated structure with dynamic queries that you’ll recognize from RDMBS ......一起来看看 《The Definitive Guide to MongoDB》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具