rails中使用delayed_job在後臺異步執行程序時使用另外的數據庫當隊列

delayed_job能夠講比較耗時的任務在後臺運行,好比發送郵件,下載,修改圖片等等 git

github上有介紹,咱們這裏使用collectiveidea的 github

https://github.com/collectiveidea/delayed_job 數據庫

並且他支持咱們多種數據庫做爲隊列。ActiveRecord ,DataMapper,IronMQ,Mongoid,MongoMapper,MongoMapper ,Redis
這裏直接試用ActiveRecord。  ruby

直接在Gemfile裏添加
app

gem 'delayed_job_active_record'
而後bundle install就好。

delayed_job須要一個表來看成隊列,直接運行下面的代碼就能建立好 ide

rails generate delayed_job:active_record
rake db:migrate

可是有不少項目有不少數據庫的,並且是不用database.yml的,還有的狀況就是須要將這個隊列另外單獨使用一個數據庫。這種狀況只須要先在須要的數據庫裏建立所需的表,而後講相關配置寫入一個Helper中,使用delayed_job前加入下面這一行代碼便可。 idea

ActiveRecord::Base.establish_connection ModelHelper.get_delayed_job_db_conf

這樣生成的隊列就會保存在相應的表中 spa

對應的 在config/initializers/delayed_job_config.rb中也須要加入如下代碼 code

ActiveRecord::Base.establish_connection ModelHelper.get_delayed_job_db_conf
這樣啓動work後纔會找到相應的隊列

這樣就能夠正常使用delayed_job了,具體的方法看github吧
隊列

相關文章
相關標籤/搜索