`

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

 
阅读更多
说明:实现对用户操作的跟踪。

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方法。
分享到:
评论

相关推荐

    触发器Triggers、MultiTrggers、EventTrigger应用案例

    在Windows Presentation Foundation ...无论是简单的属性变化响应,还是复杂的事件处理,都能通过不同的触发器类型轻松实现。在"Trigger1"这个案例中,你将有机会深入学习并实践这些概念,进一步提升你的WPF开发技能。

    java servlet 3 异步调用 异步处理 注册监听

    要实现异步调用,首先需要在Servlet类中声明`@.WebServlet(asyncSupported = true)`注解,这将启用Servlet的异步支持。然后,在`doGet`或`doPost`等方法中,可以调用`HttpServletRequest`的`startAsync()`方法来启动...

    使用Spring事件机制实现异步的方法

    * 事件机制可以实现异步处理,提高系统的性能和响应速度。 Spring事件机制的缺点包括: * 事件机制需要进行适当的配置和编码,增加了开发的复杂度。 * 事件机制需要进行适当的测试和调试,确保事件的正确发布和...

    WPF纯MVVM事件绑定+事件参数 完美示例

    首先,要实现事件绑定,我们需要引用`System.Windows.Interactivity`命名空间,这是WPF Blend SDK的一部分,提供了`EventTrigger`和`InvokeCommandAction`等类,让我们能够在XAML中绑定事件到ViewModel的命令。...

    Event Trigger Communication

    网络控制 事件触发 节省带宽资源,信号传递能源,降低时延的可能

    C++异步方式实现聊天程序

    在C++编程中,异步处理是一种非常重要的技术,它允许程序在等待某个操作完成时继续执行其他任务,从而提高程序的效率和响应性。在本篇内容中,我们将深入探讨如何利用C++的异步特性来实现一个聊天程序。 首先,C++...

    C++中的事件驱动编程:构建高效的异步处理系统

    C++作为一门性能优异的编程语言,通过事件驱动模型可以实现高效的异步处理。本文将详细介绍C++中实现事件驱动编程的方法和实践。 事件驱动编程是C++中处理高并发和异步操作的有效方式。通过合理设计事件循环、事件...

    C++/MFC实现winsock io异步操作

    - **功能**:与传统的`select`不同,异步选择通过注册事件句柄,当套接字状态改变时,Windows会发送一个消息到指定的窗口处理程序。 - **实现**:调用`WSAAsyncSelect`函数将套接字与窗口句柄关联,设置感兴趣的...

    关于事件驱动的异步处理的资料

    在WCF中,可以使用Begin/End方法对或者基于事件的异步模式来实现异步调用,这样即使服务调用需要长时间才能返回,客户端也能保持响应状态,提高用户体验。 4. **事件驱动的Web服务客户端**:在Web服务中,事件驱动...

    通过委托和异步调用实现窗体间的通讯

    总结起来,通过C#的委托和异步调用,我们可以实现高效、线程安全的窗体间通讯。这种方法既保留了程序的响应性,又简化了不同组件之间的交互逻辑。理解和熟练掌握这些概念对于开发复杂的Windows应用至关重要。

    异步编程的实现

    这通过非阻塞I/O(Input/Output)实现,即当程序发起I/O操作后,不会立即等待结果,而是返回继续执行后续代码,直到I/O操作完成时再回调函数处理结果。 2. 异步编程的必要性 在传统的同步编程中,如果一个任务需要...

    AsySocket实现的异步通信,允许多客户端

    AsySocket是一种基于异步通信机制的Socket实现,它允许服务器同时处理多个客户端连接,从而极大地提高了服务端的并发处理能力。本文将深入探讨AsySocket的工作原理、优势以及如何实现多客户端的异步通信。 首先,让...

    如何在Visual Basic中实现异步执行程序

    在Visual Basic (VB) 开发环境中实现异步执行程序是一项非常实用的技术,特别是在处理那些耗时较长的任务时,如文件复制、大量数据处理等。异步执行可以确保应用程序在执行这些耗时操作时不会冻结或响应缓慢,从而...

    nodejs异步IO的实现

    本篇文章将深入探讨Node.js如何实现异步I/O,以及相关源码和工具的应用。 一、异步I/O基础 异步I/O是一种编程模式,它使得程序在等待I/O操作完成时不会阻塞,可以继续执行其他任务。在Node.js中,这一特性主要通过...

    jsp中使用jquery的ajaxSubmit方法实现现异步上传

    总结来说,通过在JSP中结合jQuery的`ajaxSubmit`和`jquery.form.js`插件,我们可以轻松地实现异步文件上传,提高用户体验。同时,服务器端使用适当的Servlet API处理文件接收和存储,确保数据的安全传输。这种方法在...

    65性能设计篇之-异步处理1

    当用户请求到达时,系统不再立即响应,而是记录下请求,通过异步任务处理系统来分发和执行任务。这种设计模式减少了系统响应时间,使得系统能够同时处理更多的请求,从而提高了服务的并发能力。 举例来说,操作系统...

    C程序架构之事件调用机制 event

    "C程序架构之事件调用机制 event"的主题着重于如何在C语言环境中实现事件处理机制。事件调用机制允许程序异步地响应外部或内部事件,提高了程序的效率和响应性。 首先,我们来看`list.c`和`list.h`这两个文件。它们...

    Spring MVC异步模式

    本篇文章将深入探讨Spring MVC中的异步处理机制,以及如何通过源码理解和实现这一特性。 首先,我们需要了解Spring MVC异步模式的基本概念。在传统的同步处理中,请求到达服务器后,服务器会分配一个线程来处理该...

    JQuery异步上传下载

    3. 编写HTML、CSS、JavaScript代码,实现异步上传和下载功能。 4. 配置服务器:在"MyEclipse" -&gt; "Servers"中,右键选择"New" -&gt; "Server",选择Tomcat版本并完成配置。 5. 将项目部署到服务器:右键点击项目,选择...

    eventtrigger.m

    基于事件触发的多智能体系统的编队控制。事件触发可以解决芝诺效应

Global site tag (gtag.js) - Google Analytics