`

事件管理框架扩展

阅读更多

下载地址 https://sourceforge.net/project/showfiles.php?group_id=238653&package_id=322981&release_id=683333

事件管理框架通过bboss aop框架来实现远程事件管理功能。新增了事件远程服务配置文件:

/bbossevent/src/event-service-assemble.xml

文件的内容如下:

<properties>

      

       <!-- 定义可以进行远程通讯的网络节点结合,默认为all -->

       <!-- <property name="event.static-networks" value="172.16.17.254:1185"/> -->

      

       <!--

           是否启用远程事件开关,如果没有启用远程事件或者系统的rpc服务没有开启,事件的处理情况如下:

           本地事件发给当前服务器的本地事件监听器

           远程事件发给当前服务器的本地远程事件监听器、远程事件监听器

           本地远程事件发给当前服务器的本地事件监听器、本地远程事件监听器、远程事件监听器

          

          

           如果启用远程事件和开启rpc服务的情况下:

           本地事件发给当前服务器的本地事件监听器

           远程事件发给所有服务器的本地远程事件监听器、远程事件监听器

           本地远程事件发给当前服务器的本地事件监听器、所有服务器的本地远程事件监听器、所有服务器的远程事件监听器

        -->

       <property name="remoteevent.enabled" value="true"/>

       <!-- 

           /**

            * 指定缺省消息传播类型:

            * 本地传播(Event.LOCAL)

            * 远程传播(Event.REMOTE)

            * 本地远程传播 (Event.REMOTELOCAL)

            */

       -->

       <property name="event.destinction.type" value="Event.REMOTELOCAL"/>

       <property name="event.threadpool.corePoolSize" value="5"/>

       <property name="event.threadpool.maximumPoolSize" value="10"/>

       <property name="event.threadpool.keepAliveTime" value="30"/>

       <!--

       TimeUnit.SECONDS

       TimeUnit.MICROSECONDS

       TimeUnit.MILLISECONDS

       TimeUnit.NANOSECONDS

        -->

       <property name="event.threadpool.keepAliveTimeUnit" value="TimeUnit.SECONDS"/>

       <property name="event.threadpool.blockingQueue" value="100"/>

       <property name="event.threadpool.waitTime" value="1"/>

       <!--

       RejectedExecutionHandler

       必须实现java.util.concurrent.RejectedExecutionHandler接口

       目前系统提供以下缺省实现:

       com.chinacreator.thread.WaitPolicy  循环等待event.threadpool.waitTime指定的时间,单位为秒

       java.util.concurrent.ThreadPoolExecutor.DiscardPolicy 直接丢弃任务,不抛出异常

       java.util.concurrent.ThreadPoolExecutor.AbortPolicy 直接丢弃任务,抛出异常RejectedExecutionException

       java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy 直接运行

       java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy 放入队列,将最老的任务删除

        -->

       <property name="event.threadpool.rejectedExecutionHandler" value="com.chinacreator.thread.WaitPolicy"/>

    </properties>

    <manager id="event.serivce" singlable="true" >

       <!--

           事件管理远程服务

           属性描述:

           type:不同provider实现的标识

           class:实现类代码

          

       -->

       <provider type="default" class="com.chinacreator.remote.EventRemoteServiceImpl" />

    </manager>

上述文件的内容分为三部分:

第一部分

event.static-networks 如果有需要则定义远程事件默认发送的范围,前提是用户自己没有定义EventTarget对象

remoteevent.enabled 是否允许远程事件 true允许,false不允许,所有的事件将在本地传播

第二部分

event.threadpool.* 配置调度异步消息传输的线程池的相关信息

第三部分 远程事务管理服务配置

<manager id="event.serivce" singlable="true" >

       <!--

           事件管理远程服务

           属性描述:

           type:不同provider实现的标识

           class:实现类代码

          

       -->

       <provider type="default" class="com.chinacreator.remote.EventRemoteServiceImpl" />

    </manager>

事务管理框架通过该服务来广播远程事件。从上述3部分的配置内容可以看出事务管理框架的核心功能:

Ø         增加是否启用远程事件开关,这样即使系统中开通了其他的远程服务,也不会影响事件处理框架

Ø         可以设定远程事件在集群中广播的范围

Ø         扩展了远程事件发送的机制:

1.点对点事件发送(只支持Event.REMOTE事件Event. REMOTELOCAL

2.多个点的单播事件发送(支持Event.REMOTE事件Event. REMOTELOCA

3.集群组播事件发送(支持Event.REMOTE事件Event. REMOTELOCA)

EventTarget target = new EventTarget("172.16.17.254",1185);//单点发送

       Event event = new EventImpl("hello world type2 with target[" + target +"].",

                            ExampleEventType.type2withtarget,

                            target,

                            Event.REMOTE);

 

       EventHandle.getInstance().change(event);

通过定义不懂得target来实现不同的通讯模式:

EventTarget target = new EventTarget("172.16.17.254",1185);//单点发送

EventTarget target = new EventTarget("unicast:: 172.16.17.254:1186;172.16.17.254:1185");//多个点的单播事件发送

EventTarget target = new EventTarget("muticast:: 172.16.17.254:1186;172.16.17.254:1185",1185);// 集群组播事件发送

 

Ø         支持异步事件发送功能

通过jdk 1.5提供的线程池,事件管理框架中对原有的异步事件处理的功能进行了很大的改进。线程池的属性借助于bbos aop框架的全局属性配置来实现。具体可以参考上文中关于属性定义的第二部分的内容。

EventHandle.getInstance().change(event);//默认为同步发送

EventHandle.getInstance().change(event,false);//异步发送事件,关于异步发送消息的相关配置,请参考博客文章

JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介

分享到:
评论

相关推荐

    如何扩展AD架构域服务器.pdf

    **Active Directory(AD)架构扩展**是AD管理员在部署特定应用程序,如Microsoft OCS(Office Communications Server)或Exchange Server时必须进行的关键操作。这涉及到修改AD的内部结构,以容纳新应用所需的数据...

    ci 权限管理类 扩展

    总结来说,CI权限管理类扩展是CI框架中用于用户权限控制的核心组件,它提供了丰富的功能,帮助开发者构建安全、灵活的Web应用,确保只有经过授权的用户才能执行特定操作。`level.php`可能是实现这一功能的具体类文件...

    SQL利用扩展事件进行调优和

    SQL Server中的扩展事件是一种强大的诊断工具,它允许数据库管理员和开发者监视各种事件以及活动,从而进行性能调优和故障排除。扩展事件在SQL Server 2008版本中首次引入,虽然当时没有图形界面支持,捕捉结果也...

    基于Flask的简单可扩展的后台管理界面框架设计源码

    该项目是一个后台管理界面框架,旨在为Flask应用程序提供一个简单且可扩展的管理界面。系统提供了用户管理、角色权限、数据管理等功能,通过清晰的界面和丰富的交互体验,使用户可以轻松地进行后台管理操作。此外,...

    Spring-Boot插件式开发框架,为动态扩展系统而生的插件开发框架

    SpringBoot插件式开发框架是基于SpringBoot框架构建的一种创新性开发模式,旨在解决系统动态扩展和模块化管理的问题。这种框架充分利用了SpringBoot的简洁、高效特性,为开发者提供了快速构建可插拔功能的能力。下面...

    MVC架构图书管理系统

    在实际项目中,这个图书管理系统可能会使用Spring框架来实现MVC架构,Spring提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,以及对数据库操作的支持,如使用MyBatis或JPA。此外,项目可能还会涉及到前端技术...

    基于RuoYi-Vue扩展的多租户框架(SpringBoot的前后端分离权限管理系统).zip

    【标题】基于RuoYi-Vue扩展的多租户框架是SpringBoot的前后端分离权限管理系统,这个项目主要是为了实现一个适用于多个企业的系统,通过多租户模式,每个企业都可以拥有自己的独立数据空间,而无需担心数据混淆。...

    phalcon,一个c编写的php扩展型框架

    3. **全面的功能集**:Phalcon提供了一系列完整的开发工具,如MVC架构、数据库抽象层(ORM)、安全功能、缓存支持、依赖注入容器、事件管理、路由、会话管理等,覆盖了Web开发的多个方面。 4. **数据库访问对象...

    可扩展的计算机网络管理系统技术研究.pptx

    分布式管理采用分布式管理架构,将管理任务分散到不同的节点上进行处理,提高管理的可靠性和可扩展性。标准化和开放性遵循国际标准和开放接口,使得管理系统能够兼容不同的平台和设备,提高管理的互操作性和可扩展性...

    《数字政府架构框架 参考模型》团体标准(征求意见稿).pdf .pdf

    * 架构治理:数字政府架构框架的治理是指对架构的管理和维护,确保架构的安全、稳定和高效运行。 数字政府架构框架的应用场景包括: * 智慧城市建设:数字政府架构框架可以应用于智慧城市的建设中,来提高城市的...

    基于jfinal框架扩展的微信消息后台管理设计源码

    该项目是一款基于Jfinal框架扩展的微信消息后台管理设计源码,包含2107个文件,涵盖549个JavaScript脚本、187个Java源代码文件、335个PNG图片、175个LESS样式表、166个HTML文件、126个CSS样式文件、109个JPG图像、...

    EasyUI做的漂亮的后台管理框架

    综上所述,利用EasyUI构建的后台管理框架不仅提供了美观的界面,还具备优秀的功能和良好的扩展性,是开发高效后台系统的一个理想选择。通过不断优化和更新,这种框架能够满足不断变化的业务需求,为企业提供稳定可靠...

    yaf框架扩展

    **Yaf框架扩展详解** Yaf(Yet Another Framework)是由著名PHP开发者鸟哥(Laruence Yee)创建的一个轻量级的PHP框架,它的设计目标是提高PHP应用的运行效率,提供更好的性能和可维护性。在PHP 5.6版本下,Yaf能够...

    基于.Net6.0的权限管理及快速开发框架,前后端分离.zip

    基于.Net6.0的权限管理及快速开发框架,前后端分离,核心模块包括:组织机构、角色用户、权限授权、多系统、多应用管理、定时任务、业务单据编码规则、代码生成器等,整合应用最新技术包括Asp.NetCore MVC、EF、...

    论文研究-一种灵活的RFID事件规则管理框架.pdf

    初步探讨了RFID中间件中事件规则管理的内容,并提出一种灵活的RFID事件规则管理框架,全面介绍了RFID事件编码、模式过滤、目标事件识别以及业务规则定义四个环节的内容,重点阐述了一种基于XML语言的业务规则定义...

    C# 酒店管理系统 winform程序 三层框架

    总的来说,C#的酒店管理系统WinForm程序采用三层架构,实现了业务逻辑与界面的分离,提升了系统的可维护性和扩展性。通过合理设计和实现每个层次,我们可以构建出一个功能完备、用户体验良好的酒店管理系统。

    基于OAM应用模型的可扩展PaaS平台架构.pdf

    在当前的云计算环境中,PaaS(Platform as a Service)平台扮演着至关重要的角色,它为企业提供了便捷的应用托管、管理和扩展能力。本文主要围绕基于OAM(Open Application Model)应用模型的可扩展PaaS平台架构展开...

    基于thinkPHP框架的人力资源管理系统

    《基于ThinkPHP框架的人力资源管理系统详解》 在IT行业中,PHP作为一种广泛使用的服务器端脚本语言,尤其在Web开发领域扮演着重要角色。而ThinkPHP则是国内最受欢迎的PHP开发框架之一,它以其简洁的语法、强大的...

    基于纯电动汽车BMS电池管理系统架构CAN扩展应用.pdf

    基于纯电动汽车BMS电池管理系统架构CAN扩展应用.pdf

Global site tag (gtag.js) - Google Analytics