yuzd / Hangfire.HttpJob

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

请问后续JobAgent能支持postgresql吗 #95

Closed ghwillbe closed 3 years ago

ghwillbe commented 3 years ago
  1. 93

    我也遇到这个问题,如果不能返回job状态,那实现JobAgent没有任何意义,所以能否实现Agent.Postgresql^^.

  2. hangfire的调度端的storage链接字符串得需要保证 jobagent客户端所在的机器也得能访问到。 这句话应该怎么理解?我调度端和jobagent打包成两个image独立发布,是需要把config共享出来吗?

yuzd commented 3 years ago

首先,Hangfire.Agent目前的方案是为了保证job的状态的。 以前的实现方式是:hangfire server 直接去发一个http请求去调度jobagent 然后job的状态就直接变成了完成了。其实jobagent在agent端是在另外一个线程执行的。实际上jobagent最终成功还是失败就脱离了hangfire server的管控了。

目前实现的机制是: hangfire server 发一个http请求去调度jobagent,此时虽然http请求已经完成但是job的状态是执行中。 jobagent在agent端的线程执行完成后去写一条完成记录到storage。 hangfire server端会有一个backgroundjob 去检测这个完成。然后才把这个job 变成已完成状态。

新的实现机制是为了保证job的状态的。

第二个问题: hangfireserver端 你想要跑起来肯定需要一个storage对吧。目前配合jobagent支持的有(mysql,sqlserver,redis) 你只要保证你的jobagent端能够访问到你配置在调度端的storage就可以了。 说白了 就是我上面说的新的实现机制是需要agent端写storage的。 若无法访问 那就无法保证job状态了!!! (你可能有疑问:为什么agent端没有配置这个storage链接字符串,谁告诉agent的呢?是在hangfireserver调度的时候传过去给jobagent端的)

yuzd commented 3 years ago

关于是否支持postgresql 这个其实很好去兼容。 我目前使用该场景不多,所以我没有去支持。 既然是开源的了。我觉得你只要有需求可以直接加一个。照葫芦画瓢。 如果你能pr那最好了。

ghwillbe commented 3 years ago

关于是否支持postgresql 这个其实很好去兼容。 我目前使用该场景不多,所以我没有去支持。 既然是开源的了。我觉得你只要有需求可以直接加一个。照葫芦画瓢。 如果你能pr那最好了。

感谢鱼总的解答,PR是可以安排的,如果我测试成功的话。请Close此issue吧,谢谢啦。