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

欢迎!请查看关于页面获取关于该网站的更多信息。

0
Clojure

在Ruby on Rails中,它们有ActiveJob来实现后台任务。例如delayed_jobresque等。

在Clojure中是否有相似的东西?

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

2 个答案

+1

被选中
 
最佳答案

有一个名为Proletarian的项目,是我为了与delay_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中创建了一个issue #144,以从HTTP端点创建作业。谢谢你的想法,Edward!

...