内容简介:kaka-core 是一项服务于 Java 后端的事件领域模型,全局事件通知框架。 kaka-core 已移至 https://gitee.com/zkpursuit/kaka-core , 并支持 maven 直接安装。 本次更新新增与第三方消息队列对接的功能 1、稍加编...
kaka-core 是一项服务于 Java 后端的事件领域模型,全局事件通知框架。
kaka-core 已移至 https://gitee.com/zkpursuit/kaka-core , 并支持 maven 直接安装。
本次更新新增与第三方消息队列对接的功能
1、稍加编码就能对接市面上所有第三方消息队列。
2、通过消息队列派发和消费事件可由远程事件处理器处理并返回处理结果。
3、返回处理结果与本地执行事件完全相同(注:SyncResult消费处理远程事件时不可用)。
4、稳定性完全由第三方消息队列决定。
原理:每个事件调度中心为消息的发布者亦为消息的订阅者,派发事件即将事件发布到消息队列,订阅者消费到事件后本地化处理事件,处理完成后再次将事件发布到消息队列,根据事件ID在发送方找到缓存在内存的原始事件对象并进行结果赋值或回调。
原理执行流程图(感谢用户 微信名:碧涛 提供此图):

基本范例:
Facade facade = FacadeFactory.getFacade();
//以下通过ActiveMQ消息队列消费处理事件,并获得事件处理结果
facade.initRemoteMessageQueue(new ActiveMQ("event_exec_before", "event_exec_after")); //此行全局一次设定
Message message = new Message("20000", "让MyCommand接收执行");
IResult<String> result4 = message.setResult("ResultMsg", new AsynResult<>(5000));
facade.sendMessageByQueue(message);
System.out.println("消息队列消费处理事件结果:" + result4.get());
facade.sendMessageByQueue(new Message("40000", "", (IResult<Object> result) -> {
String clasz = ((CallbackResult<Object>) result).eventHanderClass;
StringBuilder sb = new StringBuilder("消息队列消费处理事件结果异步回调:\t" + clasz + "\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);
}));
此版本中对Handler注解实现了枚举支持,如:
@Handler(cmd="A", type=MyEnum.class)
其中"A"为MyEnum中的枚举项
以上范例完整代码可在源码 test 中查阅,
源码地址:https://gitee.com/zkpursuit/kaka-core/tree/master/src/test/java/kaka/test
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rework
Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00
"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!