rails中使用delayed_job在后台异步执行程序时使用另外的数据库当队列

delayed_job可以讲比较耗时的任务在后台运行,比如发送邮件,下载,修改图片等等

github上有介绍,我们这里使用collectiveidea的

https://github.com/collectiveidea/delayed_job

而且他支持我们多种数据库作为队列。ActiveRecord ,DataMapper,IronMQ,Mongoid,MongoMapper,MongoMapper ,Redis
这里直接试用ActiveRecord。 

直接在Gemfile里添加

gem 'delayed_job_active_record'
然后bundle install就好。

delayed_job需要一个表来当作队列,直接运行下面的代码就能创建好

rails generate delayed_job:active_record
rake db:migrate

但是有很多项目有很多数据库的,而且是不用database.yml的,还有的情况就是需要将这个队列另外单独使用一个数据库。这种情况只需要先在需要的数据库里创建所需的表,然后讲相关配置写入一个Helper中,使用delayed_job前加入下面这一行代码即可。

ActiveRecord::Base.establish_connection ModelHelper.get_delayed_job_db_conf

这样生成的队列就会保存在相应的表中

对应的 在config/initializers/delayed_job_config.rb中也需要加入以下代码

ActiveRecord::Base.establish_connection ModelHelper.get_delayed_job_db_conf
这样启动work后才会找到相应的队列

这样就可以正常使用delayed_job了,具体的方法看github吧

转载于:https://my.oschina.net/u/572987/blog/108856

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值