项目中需要优化任务管理系统,项目由SSM框架搭建,Control层接受到前台请求消息后,由任务管理Service 发送消息到子系统处理,子系统处理完毕后回执消息到任务管理层,任务管理层需要同步信息给Control,反馈到界面。比如浏览查询下载,项目使用了RabbitMQ,集成了Spring上,监听器实现了MessageListener接口,因为Control层调用任务管理发送消息后,需要等待子系统处理返回信息,所以Control层给任务管理Service提供了一个对象,对象中有Flag = false,当任务管理Service监听到消息MessageListener ----void OnMessage函数反应后,Flag 置 为TRUE ,任务管理调用TaskService后发送消息,做了一个死循环校验传递给Service的对象Flag,现在项目提出优化这一部分不用死循环,比如完成后触发操作反馈给页面,请问有什么好的方法。
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
既然是这种模式肯定任务就不是短时间处理完的;
服务端内部处理既然异步了,那么httpService到客户端也应该异步——如果采取空耗无疑白白浪费大把资源。因此适合的该场景的选择应该用webSocket组件或者自己客户端去轮询任务列表(webSocket当然也有这种封装,还取决于产品设计等因素)。
当然如果你们咸蛋的慌,任务本身执行很短,httpService服务器空耗也能满足负载,那么你选取Controller Waite For TaskFinish 也不是不可以。
- 1 回答
- 0 关注
- 869 浏览
添加回答
举报
0/150
提交
取消