javascript Meteor中的后台任务

ssm49v7z  于 2023-01-16  发布在  Java
关注(0)|答案(4)|浏览(162)

我想知道,有没有办法实现后台任务?也许与工人池。你能告诉我的方向,我正在考虑写这个包?

uurity8g

uurity8g1#

2019年更新

在考虑写一个包之前,首先看看是否有现成的包可以满足你的需求。在Meteor的世界里,这意味着在Atmosphere上查找"job/queue/task/worker management/scheduling"包,然后在npm上查找相同的搜索词。你还需要更精确地定义你的需求:

  • 您想要持久性,还是使用内存中的解决方案?
  • 你希望能够将作业分配到不同的机器上吗?

陨石特有

  • job-collection-可靠(我在2014年启动时在生产中使用过它),但目前处于维护模式。允许您调度在任何地方(服务器,客户端)运行的持久性作业。
  • SteveJobs-由Max Savin积极维护,他是多个powerful Meteor tools的作者
  • Meteor的一个简单的cron系统。它支持在多个进程之间同步作业。
  • 废弃包裹:*
  • artwells:queue-优先级、调度、日志记录、重新排队。队列由MongoDB支持。最新code commit:2015年10月
  • 超级基本的cron包:easycron。最后更新日期:2015年12月。
  • differential:workers-生成无头工作机meteor进程以处理异步作业。上一个code commit:二〇一五年一月
  • cronsince 2015
  • PowerQueue-放弃since 2014。排队异步任务,限制资源使用,重试失败。支持子队列。No scheduling。没有测试,但nifty demo。由于使用recursive calls,不适合长时间运行。

Npm程序包

Meteor能够直接使用npm包已经有好几年了,所以这个问题相当于在NPM上查找作业/工人/队列管理包。

  • "Async"提供了大约70个函数,包括常见的"功能性"问题(mapreducefiltereach ...)以及一些异步控制流的常见模式(parallelserieswaterfall ...)"
  • d3-queue-极简主义,由D3作者Mike Bostock编写

如果您确实需要持久性,因为Meteor已经使用了MongoDB,使用一个持久性到MongoDb的作业调度包可能会很有利。最强大和流行的似乎是Agenda,但不幸的是它已经几个月没有维护了,而且它有一个issues的大量积压。
如果您希望将redis支持的依赖项添加到项目中,还有更多选择:

  • bull-由Redis支持的Node功能最全的作业队列解决方案
  • bee-简单、快速、健壮。不存在Bull所表现出的内存泄漏问题
  • Kue-节点的优先级作业队列

和MongoDB一样,Redis也可以提供高可用性(通过Redis Sentinel),如果你想在多台工作机器上分发作业,你可以把它们都指向同一个Redis服务器。

zzzyeukh

zzzyeukh2#

有一个基于Cron作业的程序包,可用于在特定时间间隔或日期调度任务。https://atmosphere.meteor.com/package/cron
如果您碰巧查看该软件包的源代码,您会注意到它们只是使用:
Meteor.setInterval( ... , delay );
因此,如果您将任务保存在数据库中,然后在启动时将它们加载到间隔中,那么您可能会走上正确的道路。

7kqas0il

7kqas0il3#

如果你正在寻找Meteor特有的东西,我很乐意分享一个新的软件包,叫做SteveJobs,它使得运行后台作业像调用一个方法一样简单。
它拥有你所期望的所有标准特性,比如只运行一次作业,重试失败的作业等等,你可以在GitHub上了解更多:
http://github.com/msavin/stevejobs

bpzcxfmw

bpzcxfmw4#

我猜正确的支持是在他们的路线图上,但同时我已经设法通过setInterval以一种黑客的方式让它运行起来。

相关问题