通过eventTrigger,JMS实现业务的异步处理

本文详细介绍了如何使用事件触发器实现系统模块间的异步处理,提高响应速度。通过配置事件触发器、初始化配置文件、业务方法中的持久化操作以及使用Spring配置监听器,实现特定条件下的消息发送。
说明:实现对用户操作的跟踪。

eventTrigger来发送message来实现跨模块,异步处理。
可以提高系统响应速度(只需持久化当前entity的状态,而后续的处理则交给监听器来实现)。

1. 在系统特定位置配置如reg.xml的的配置文件。配置文件描述了模块名,队列名等详细信息。
内容如下
<EVENTTRIGGER MODULE="REG" DETINATION="*********.reg.eventQueue">
<!--REGIF58 REGIF63 start-->
<LISTEN>

<TRIGGER>
<ENTITY>RET</ENTITY>
<EVENT>RET_POST</EVENT>
</TRIGGER>
<INTERFACE>
<IFCODE>REGIF58</IFCODE>
</INTERFACE>
<INTERFACE>
<IFCODE>REGIF63</IFCODE>
</INTERFACE>
</LISTEN>

<!--REGIF58 REGIF63 end-->

</EVENTTRIGGER>

2. 系统启动时,通过EventTriggerRegistry的static方法初始化配置文件。
利用Digester技术将配置解析成EventTriggerRegistry的实例属性,如
this.listens
this.eventTriggers
this.indexedListens
this.indexedStrictlyListens
this.indexedStrictlyListensWithModule
等等。这样,通过EventTriggerRegistry的
getListenersByEvent
getListenersByTrigger
等方法可以知道,对于某种entity,entitycode是否配置了监听器。

3.在业务方法中,通过emgr工具类来进行entity的持久化。
通过分析业务需求,如果需要发送消息,则设置emgr.context.eventCode属性。
这样emgr在持久化的处理中,会根据设置的emgr.context.eventCode属性自动的进行判断是否对于这种entity的这种entitycode进行了监听。如果是,则发送消息,如果没有,则不发送。

4.利用spring,配置各个模块的jms监听器。
监听器持有一个servicecollection,
该servicecollection的Map<key,bean>属性service包含了配置的所有实际监听bean。
<REGIF63,REGIF63>
<REGIF62,REGIF62>
通过单例的EventTriggerRegistry,取得key,(即第一步配置的<IFCODE>REGIF63</IFCODE>),进而取得bean,然后invoke该bean的excute方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值