【教程】JFinal-Event异步执行JBolt中服务端websocket推送

需求:后端有通知和待办,及时推送给前端相关用户,在页面显示提示信息。

用到技术:

1、websocket 后端推送最终使用的是websocket 前端用户登录后与后端服务器建立websocket链接

2、JFinal-event 异步执行消息推送 与主业务解耦 不能在新增一条todo待办或者notice通知后立马同步执行websocket的推送,如果系统里有1000个客户端,你得等都推送完了才能结束这个业务的响应 显然不合理。需要在todo和notice save之后 向事件处理队列或者pool里推送一个事件就立马结束这个业务,等待事件监听器起作用后异步处理。

d69f53ee0bf05ce22fa9947f4ed0eb2.png

save成功立马post一个事件。

419e4bfdfe37086127b8d854edc6d28.png

监听器监听这个事件

image.png

监听到事件后异步执行websocket推送就行了


上效果:



如何在项目里引入JFinal-event:

1、pom.xml 

版本3.1.3

image.png

2、配置插件

image.png


image.png


3、创建EventListener 写注解

package cn.jbolt._admin.event;

import com.jfinal.log.Log;

import cn.jbolt.common.model.SysNotice;
import cn.jbolt.common.model.Todo;
import net.dreamlu.event.core.EventListener;
/**
 * JBolt 内部事件监听处理
 * @ClassName:  JBoltEventListener   
 * @author: JFinal学院-小木 QQ:909854136 
 * @date:   2021年10月6日   
 */
public class JBoltEventListener {
	private static final Log LOG = Log.getLog(JBoltEventListener.class);
	/**
	 * 全局通知事件监听处理
	 * @param notice
	 */
	@EventListener(async = true)
	public void sysNotice(SysNotice notice) {
		
	}
	
	/**
	 * todo事件监听处理
	 * @param todo
	 */
	@EventListener(async = true)
	public void todo(Todo todo) {
		
	}
}


4、找到合适的地方执行

EventKit.post(event)就行了

评论区

zzutligang

2021-10-10 16:37

思路正确!

jfinal爱好者22

2021-10-14 08:56

值得借鉴

523039704

2021-10-18 20:22

能搞个demo,借鉴一下不?