midwayjs / midway

🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 🌈
https://www.midwayjs.org/
MIT License
7.4k stars 577 forks source link

请问KOA做底层框架,并且PM2部署的时候,如何能实现定时任务? #960

Closed exment closed 3 years ago

exment commented 3 years ago

当使用egg的时候可以使用定时任务,如果是KOA并且PM2模式跑的时候如何才能实现定时任务?

czy88840616 commented 3 years ago

计划会写一个单独的 for 定时任务场景的 framework 来支持这个能力。

exment commented 3 years ago

请问这个计划什么时候能出啊 现在准备用mq来实现这个功能了

czy88840616 commented 3 years ago

mq 实现?好像哪里不太对,不是一回事吧。。

exment commented 3 years ago
  1. 后台管理计划任务
  2. 当计划任务变动的时候把当前计划任务信息放入mq并设置ttl
  3. 当ttl到期从监听mq客户端从死信队列里面取出要执行的计划任务执行并计算执行时间记录日志 4.根据执行情况调整ttl并重新放入mq队列重复以上步骤。。。
exment commented 3 years ago

关键还有考虑到分布式计划任务,非node语言处理计划任务等问题, 还有计划任务时间执行过长或计划任务间隔时间过短会导致计划任务堆积的问题。。。

czy88840616 commented 3 years ago

普通的分布式定时可以在 redis 订阅消息来做。堆积这些是策略问题。

exment commented 3 years ago

redis 没有ack机制。。。

czy88840616 commented 3 years ago

这个就是执行成功之后自己回写一下就行了吧。

exment commented 3 years ago

可以。。。

stone-jin commented 3 years ago

@exment https://help.aliyun.com/document_detail/148204.htm?spm=a2c4g.11186623.2.6.9a505189NdLLqu#section-ww9-0re-gta ,阿里云这个免费服务能满足你需求吗?比如你在平台上面配置一个http定时任务。在特定时间来调用你的http接口,然后你收到请求后再处理一下

stone-jin commented 3 years ago

另外我这边同时开发一下你分布式和非分布式的两种任务

stone-jin commented 3 years ago

@exment 近期发布分布式任务方案,请关注。

stone-jin commented 3 years ago

@exment https://www.yuque.com/midwayjs/midway_v2/task 已经发布一阵子了,请关注

exment commented 3 years ago

谢谢,基于bull的方案有关注过,增加了一点复杂性, 最近已经放弃了用TS或JS实现后端,改成GO实现后端, 不仅单机定时任务,分布式定时任务也能很方便的实现。