JFinal

登录 注册

JFinal-event(JFinal消息驱动插件)

模仿的Spring中的消息事件:详解Spring事件驱动模

代码简单无任何第三方依赖,具体使用如下:

// 初始化插件
EventPlugin plugin = new EventPlugin();
// 开启异步,默认同步。或者使用`threadPool(ExecutorService executorService)`自定义线程池。
plugin.async();

// 设置扫描jar包,默认不扫描
plugin.scanJar();
// 设置监听器默认包,默认全扫描
plugin.scanPackage("net.dreamlu");

// 启动插件,用于main方法启动,jfinal中不需要,添加插件即可。
plugin.start();

// 发送第一个消息
EventKit.post(new Test1Event("hello1"));
// 发送带tag的消息
EventKit.post("save", new Test2Event(123123));

Thread.sleep(1000);

// 停止插件,用于main方法测试。
plugin.stop();

// 注意:异步需要2个条件
// 1. 开启异步
// 2. @Listener(order = 1, enableAsync = true, tag="save")注解中,enableAsync = true开启异步。

源码连接:http://git.oschina.net/596392912/JFinal-event

发送远程事件

服务端:

plugin.setRmiServer(int port);

客户端:

plugin.setRmiClient(String host, int port);

使用:

EventKit.postRemote(final ApplicationEvent event);
// 或者
EventKit.postRemote(final String tag, final ApplicationEvent event);

建议:将服务端和客户端通用的event类文件打成maven模块。

具体使用手册WIKI地址:http://git.oschina.net/596392912/JFinal-event/wikis/home

jar包下载:

http://central.maven.org/maven2/net/dreamlu/JFinal-event/

<dependency>
    <groupId>net.dreamlu</groupId>
    <artifactId>JFinal-event</artifactId>
    <version>1.5.1</version>
</dependency>

更新说明:

2017-04-28 v1.5.1

  1. 基于rmi的远程Event

2017-03-22 v1.4.2

  1. 更改默认线程池为SingleThreadExecutor,使异步执行有序化。

  2. 添加EventThreadFactory,处理异步时的异常避免影响服务请求。

建议:如果event需要发送大量的异步事件,建议使用自定义线程池。 

如:eventPlugin.threadPool(Executors.newCachedThreadPool(new EventThreadFactory()));

2017-02-15 v1.4.1

  1. 添加自定义线程池EventPlugin.threadPool(ExecutorService executorService)方法

2016-08-19 v1.4.0

  1. 升级到JFinal2.2,JFinal低版本用户请使用v1.2.0。

  2. EventKit.postEvent(event)更改为EventKit.post(event),postEvent不再建议使用。

  3. 添加EventKit.post(tag, event)方法,@Listener(order = 2, tag = "save")添加tag