首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EventMachine的消费表

使用EventMachine的消费表
EN

Stack Overflow用户
提问于 2012-12-10 17:56:27
回答 2查看 76关注 0票数 0

我在我的项目中有一个模型重新发送,它包含内容和状态列。

使用EventMachine消耗状态为0的所有记录的最佳/最快方法是什么?

我想要创建一个简单的工作人员,它尝试每段时间用status==0查找记录(比如每隔5分钟)

我对EventMachine还不熟悉,也找不到很多如何处理DB的例子。

到目前为止,我做了如下内容,但不确定它是否是最佳实现:

代码语言:javascript
复制
$ROOT_PATH ||= File.expand_path("#{File.dirname __FILE__}")

require "rubygems"
require 'eventmachine'
require 'em-http'

require "#{$ROOT_PATH}/app/models/resend.rb"


EventMachine.run do
  EM.add_periodic_timer(5) do
    Resend.active.each do |msg|
        http = EventMachine::HttpRequest.new($RECEIVER_URL).post :body => {:message => msg.content }
        http.callback { msg.update_status! }
    end
  end
end

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2012-12-10 19:19:46

这种方法的问题是,您将触发该范围内的每一个新的调用,并且每5秒执行一次。至少,您需要将这些记录标记为正在处理,这样就不会重复工作。如果处理其中任何一个都需要超过5秒的时间,那么就会有重叠的调用。

您真正需要的是像贝斯塔尔德工作这样的作业队列。

票数 0
EN

Stack Overflow用户

发布于 2012-12-11 04:09:00

您需要您的DB的偶发版本。他们通常有前缀em-。如果是mongoDB,就有‘他们-芒果’宝石。对于Mysql,我听说的最佳选择是在mysql2 gem中内置异步模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13806433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档