yuzd / Hangfire.HttpJob

httpjob for Hangfire,restful api for Hangfire,job调度与业务分离
https://github.com/yuzd/Hangfire.HttpJob/wiki
MIT License
635 stars 187 forks source link

请教, 执行过程中与前台如何交互 #128

Closed xibaoning closed 3 years ago

xibaoning commented 3 years ago

业务中有耗时任务(大概20分钟执行完成), 期间想返回当前的一些提示信息与进度 给前端用户(用户浏览器), 而不是管理员到后台管理界面去监控, 这部分的实现有什么思路么

yuzd commented 3 years ago

你说的这个场景我也有这个需求 所以针对这个需求我开发了agent 中间件

请查阅

https://github.com/yuzd/Hangfire.HttpJob/wiki/03.HttpJob.Agent%E7%BB%84%E4%BB%B6%E4%BB%8B%E7%BB%8D%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8

xibaoning commented 3 years ago

看了,还是没太明白呢, 文章里面还是到后台去点击查看了task的信息, 自己的前端页面怎么获取到这些信息呢, 自己去数据库查询?

yuzd commented 3 years ago

自己的前端页面无法获取到把。你的意思是 hangfire dashbord 的console功能 你自己做?

xibaoning commented 3 years ago

场景是这样的: 用户(普通注册用户, 不是开发人员)在线提交一个耗时任务, 然后让用户可以点击详情页查看任务执行的状态与一些消息,假设httpclient模块提供一个 GetCurrentStates(jobId)类似的功能, 我自己的程序就可以调用这个接口获取任务的状态了(隔几秒查询一次)

昨晚也研究了下原理, 目前好像做不到, 只有管理员到后台去查看进度与消息,想在现有上实现只有自己去查询数据库, 看了进度条等信息保存到了数据库中; 希望未来能通过你的接口用代码方式就能查询到任务信息, 而不是登录到dashbord后台查看 也相当于您上面说的自己做dashbord, 但功能没这么复杂, 就是想提交任务后, 能通过代码查询到信息而已, 比如日志,与进度, 日志可以分页或增量形式查询

yuzd commented 3 years ago

你说的这个功能目前是hangfire的一个扩展插件叫 console 实现了的事情

也就是说你想要暴露一个console插件的api出来让你的前端调用。 你可以打开dashbord的console来查看他是怎么调用的,看能否移植过去