`
javamonkey
  • 浏览: 169405 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

一个新的小开源项目,spring-dumpling

阅读更多

介绍除了beetl外,在维护的另外一个小开源项目,spring-dumpling,提供一组注解来增强spring service的协作

一:协作服务
1 @CooperationService,类似于Spring的@Service
所有标记@CooperationService的类都将检查类方法里是否有如下annotation
@Publish / @Subscribe
@ClusterSync
@RemotePublish / @RemoteSubscriber
@RemoteNotify / @RemoteWait
@Process / @Task

2 @Publish,有如下属性
path: 一个逻辑路径,必须要
ruleExp: 根据输入值,输出值的表达式判断是否需要Publish,否则,总是通知其他机器. 如规则rule="returnValue==true",默认是发送
argExp:一个参数表达式列表,如果没有,则按照输入参数和输出参数作为参数列表,传递个sub。参数格式如:argExp="args0.orderId,args1,returnValue;"

@Subscribe
path: 一个逻辑路径,必须要
runPolicy: 运行时机,有俩个值,一个是sameTransacion,表示于publish方法在同一事物里,另外一个是afterCommint,这是默认值,表示当事物成功提交后异步执行,如果Publish没有在事物上下文里,则@publish方法执行完毕后立刻执行

3 @ClusterSync
path:一个逻辑路径,一旦机器(JVM)获取锁,将永久占有锁,机器宕机或者失去连接,将导致其他机器中的某一个占用
allowAcessAsFistTime: false或者true,默认false。如果为true,则允许第一次调用忽略锁

4 @RemotePublish,同Publish,但是发布到远程
path 一个路径
ruleEx: 根据输入值,输出值判断是否需要Notify,默认是returnValue!=null ,否则,总是通知其他机器.如规则rule="returnValue==true"
argExp:一个参数表达式列表,如果没有,则按照输入参数和输出参数作为参数列表,传递个sub。参数格式如:argExp="arg0=input0.orderId;arg1=input0.cash;arg2=returnValue;"

@RemoteSubscriber
path:一个路径。

5 @RemoteNotify,远程只能有一个被执行
path 一个路径
rule: 根据输入值,输出值的表达式判断是否需要Notify,否则,总是通知其他机器. 如规则rule="returnValue==true",默认是发送
argExp:一个参数表达式列表,如果没有,则按照输入参数和输出参数作为参数列表,传递个sub。参数格式如:argExp="arg0=input0.orderId;arg1=input0.cash;arg2=returnValue;"
@RemoteWait ,
path:一个路径。

6 @Process
@Task待定

二:协作服务提供者

每组annotation可以有自己的协作服务提供者,或者共用一种协作服务提供者(如果服务提供者都支持)。
协作服务提供时机应该是系统启动成功后(也包括系统各个组件初始化成功后)
Remote的协作服务实现可以通过JMS,ZK,甚至数据库表共享来实现。推荐使用ZK,但ZK 对RemotePublish 支持并不好。不适合线上业务,只适合一些数据同步和管理功能。
@Publish,@Process是基于Local的,则不需一个第三方协作服务提供者。

三:协作服务发现:

通过Spring的机制PostProcessor,首先找到注解为@CooperationService的类,然后依次遍历方法,可以发现这些需要服务的方法和类
也能适合别的框架,如没有spring的情况

四 协作者
分为发起方和接收方,通过申明annotation,可以实现协作。也可以直接在代码里调用协作服务API以满足发起方的灵活性要求.如一个方法体里需要俩次Publish到不同地方
PublicService pub = ctx.get("CooperationService-Pub");pub.send(path1, arglist),pub.send(path2,arglist2)

五 应用场景说明

1 多台机器上只有一台能执行某个job,则使用@RemoteSynronized
2 主业务调用后会调用一些次要业务,不希望次要业务影响主业务的性能和牺牲可维护性 主业务使用@Publish,多个次业务使用@Subscribe。
3 数据需要同步到多台机器上,使用@RemotePublish和 @RemoteSubscriber标签
4 数据需要交给远程的任一台机器处理,使用@RemoteNotify然后结合@RemoteWait 标签一起用
5 主业务和次要业务处理后,还要求交给远端一个机器处理 可以在使用@Publish,@Subscrbie后,可以结合@RemoteNotify,@RemoteWait 来处理

 

有兴趣可以关注 http://sourceforge.net/p/spring-dumpling/wiki/Home/  过一阵子会提供更完善的文档和例子

分享到:
评论

相关推荐

    dumpling-0.2.zip

    标题 "dumpling-0.2.zip" 暗示我们正在处理一个软件包或库的版本,这里的 "dumpling" 很可能是项目的名字,而 "0.2" 表示这是该项目的第二个次要版本。这个压缩包可能包含源代码、构建脚本和其他资源,用于开发或...

    my-dumpling-app:一站式饺子店

    该项目是通过引导的。可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。 该项目位于此处: :

    Dumpling Network Visualization Tool-开源

    【Dumpling网络可视化工具】是一个开放源代码的项目,主要设计用于帮助用户解析和分析网络数据包。这款工具基于PHP编程语言,并依赖于MySql数据库进行数据存储和管理,提供了一个直观的Web界面来展示网络流量信息。...

    谷歌师兄的leetcode刷题笔记-dumpling_chat:聊天机器人!!!

    我还得到了兄弟的帮助,为这个项目制作了一个 Web 应用程序。 我已经了解了这些很酷的虚拟助手的基本工作原理,谷歌助手、Siri 和我一直以来最喜欢的 Jarvis(笑) train 脚本很长,因为它还包括文本预处理过程...

    twrp-3.3.1-0-twrp.img

    常用的recovery工具

    dumpling jump.exe

    dumpling jump.exe

    rice_dumpling.py

    rice_dumpling.py

    2020春五年级英语下册Unit7Chinesefestivals知识梳理新版牛津译林版20200428398

    7. January - 一月,一年的第一个月。 8. race - 比赛,如龙舟比赛。 9. songbird - 鸣鸟,与春天的生机勃勃相呼应。 10. February - 二月,春节通常在这个月庆祝。 11. place - 地方,指举行活动的场所。 12. knock...

    精品(2021-2022年)资料苏教版牛津重点小学英语五下单词表.doc

    这份资料是针对苏教版牛津小学五年级下学期的英语单词表,涵盖了多个单元的重要词汇,旨在帮助学生系统地学习和复习英语基础知识。以下是各单元的主要知识点: **Unit 1** 主要学习与人物、原因和服装相关词汇,如...

    初中英语单词分类记忆大全.doc

    - spring(春天) - summer(夏天) - autumn(秋天) - winter(冬天) 3. **方位**: - east(东) - south(南) - west(西) - north(北) - left(左) - right(右) 4. **交通工具**: - bike...

    优秀资料(2021-2022年收藏)小学英语名词单数变复数规则及练习.doc

    这个过程涉及到一系列规则,帮助学生理解并记忆不同类型的名词如何转变为复数形式。以下是对这些规则的详细解释: 1. **一般规则**:大多数名词在词尾加-s来形成复数,如:desk -> desks,girl -> girls,boy -> ...

    【小学英语】关于包饺子的小学生英语作文(三篇).doc

    这篇文档包含了三篇关于小学生如何用英语描述包饺子经历的文章,是小学英语学习的一个实践性写作题材。...通过这样的写作练习,学生不仅能学习新的词汇和语法,还能锻炼叙事技巧,并学会如何有条理地描述一个过程。

    外研版七年级上册Module 10 Spring Festival练习题及答案精选.doc

    这篇文档是针对初中一年级学生设计的一份关于外研版英语教材Module 10 Spring Festival的练习题及答案。模块主题围绕春节这一中国传统节日展开,旨在帮助学生提高英语水平,同时了解和学习中国文化。 在练习题中,...

    台湾小吃英文名称(Word档含图文).doc

    以上是台湾小吃的一些代表,每一种都有其独特的味道和制作工艺,是台湾饮食文化的重要体现。这些美食不仅反映了台湾的历史和地理环境,还承载了当地人的情感与记忆。通过了解和尝试这些小吃,可以更好地体验台湾的...

Global site tag (gtag.js) - Google Analytics