有关rails前端和scala后端之间通信的建议

时间:2012-04-19 09:04:03

标签: ruby-on-rails scala rest message-queue backend

我们正在开发以下设置:

rails webapp允许用户对传递给Scala后端的任务发出请求,这可能需要10秒或更长时间。在发生这种情况时,用户用于发出请求的页面会定期使用AJAX轮询rails以查看任务是否完成,如果是,则返回结果。

从用户的角度来看,请求是同步的,除了他们的浏览器没有冻结,他们得到一个很好的spinny东西。

后端所需的输入数据很大,结构也很复杂,输出也是如此。我最初的计划是简单地让两个应用程序共享相同的数据库(这将是MongoDB),因此rails应用程序可以简单地将一个id写入'jobs'表,该表将由作为守护进程运行的scala后端获取,但我想的越多,我就越担心这种方法可能会有很多潜在的问题。

最令我担心的两件事是两种不同语言的模型代码重复,这些代码需要保持同步,并且在部署时处理此问题会增加复杂性。在评估这种方法时,我应该考虑哪些其他可能的问题?

我正在关注的其他一些可能性是1)使Scala后端成为RESTful服务或2)实现消息队列。但是,我并不完全相信这两个选项,因为它们都需要更多的开发工作,而且在我看来,在这两种情况下,模型代码无论如何都是有效复制的,无论是作为RESTful API的一部分还是作为消息的消息队列 - 我错了吗?如果其中一个选项更好,那么接近它的好方法是什么?

2 个答案:

答案 0 :(得分:3)

我已经多次使用resque来解决类似的问题,并且我一直很满意它,它为您提供了实现作业队列所需的一切,并且支持redis。我强烈建议你去看看它

答案 1 :(得分:0)

不要误解我的意思,但是,对于这个项目,Rails提供的Scala没有提供什么?

换句话说,你可以完全不使用Scala并在Rails中完成所有操作吗?显然是的,但是你在Scala开发后端是有原因的,对吧?现在,Scala提供的Rails没有提供什么?

我不是说你应该做其中一个,但保持重复的代码是在寻找麻烦/并发症。

如果你已经在项目中投入了大量的Ruby代码,那么你就会致力于Rails,除非进行完整的Twitter式改造(这听起来不是一个选项,也不是理想的选择)。

无论如何,不​​确定如何绕过模型复制。点击Mongo后端确实可以购买BSON结果集,您可以将其与Spray结合使用,它们可以很好地实现Akka,开箱即用的REST和JSON实用程序。

严峻的问题,听起来像是在两种范式之间被抓住了!