2024 Clojure 状态调查中分享您的想法!

欢迎!请参阅关于页面,以了解更多关于其如何工作的信息。

0
Clojure

Ruby on Rails 中有 ActiveJob 用于实现后台作业。例如 delayed_jobresque 等。

Clojure 中有类似的东西吗?

基本上,我想要一个 REST 端点调用,它可以将长时间运行的作业排队运行。虽然它立即返回一个作业 ID,但不需要等待任务完成。该任务应在后台继续运行,直到完成。

2 个答案

+1
 
最好的答案

有一个叫做Proletarian的库,专门为 perdly_job 和 Resque 支持的使用场景而设计。虽然没有 REST 接口 - 您可以通过调用将作业写入作业表的函数来排队作业。这是由 Postgres 支持的,并且可以参与您已经使用的 Postgres 事务。这为您提供了基于 HTTP 或 Redis 的解决方案无法提供的保证,即作业与事务中持久化的其他任何业务数据原子性地持久化。

谢谢,看起来很有前景。在我的场景中使用的是Postgres。
0

嗨Edward,
你可以看看nilenso/goose,这是一个可靠且可扩展的Clojure后台任务处理库;它可以处理任务失败,并支持计划、cron和批处理任务。

Goose内置支持Redis和RabbitMQ消息代理。如果用户需要其他代理(如AWS SQS或Postgres),Goose也提供了插入自定义代理的配置。

请注意,Goose任务不能通过API端点创建,但可以使用类似于RoR ActiveJobs函数调用来创建。
虽然我喜欢你的想法。API调用是一个可行的功能,对参数数据类型有一些限制。

我在Goose中创建了一个问题 #144,以便从HTTP端点创建任务。感谢你的建议,Edward!

...