【发布时间】:2012-05-22 22:43:00
【问题描述】:
我正在使用 jruby on rails 编写应用程序。应用程序的一部分从网页启动一个长时间运行的进程。在某些情况下,长时间运行的过程可能会持续 20 分钟,但在大多数情况下,就时间而言,它的寿命会超过网页响应。如果用户关闭浏览器,我也希望这项工作能够继续。长时间运行的进程将在运行时将记录添加到数据库中。
我想在网页上给出插入数据库的可视指示,我更喜欢使用 Web 套接字而不是轮询数据库以获取插入。
我正在考虑使用队列处理程序将消息发送到 resque 队列,该队列处理程序将确保在用户关闭浏览器时完成作业。队列处理程序将执行插入到数据库中。
我正在考虑使用 EM-WebSocket 作为我的 websocket 服务器。
我遇到的问题是:
resque 进程和 EM-WebSocket 进程之间如何通信?我想以某种方式将新插入的详细信息从 resque 进程传递到数据库中,并传递给将与浏览器通信的 EM-WebSocket 实例?
任何人解决了这样的问题或任何想法我可以如何做到这一点?
【问题讨论】:
-
您是否考虑过将结果添加到 Redis 队列并在 Rails 应用程序中观察该队列?假设您使用的 Redis 库能够从这样的队列中观察/观看/弹出元素。
-
这实际上看起来是一个很好的起点blog.0x82.com/2009/12/28/…
-
是的,这就是我的意思,使用队列。
标签: ruby jruby resque eventmachine