zoukankan      html  css  js  c++  java
  • redis resque消息队列

    Resque

    目前正在学习使用resque 、resque-scheduler来发布异步任务和定时任务,为了方便以后查阅,所以记录一下。

    resqueresque-scheduler其优点在于功能比较强大,可扩展性好,已有数个各种不同目的的扩展可用。使用redis作为消息队列的存储,比较与时俱进,与操作系统无绑定,完全在rails框架内运行,配置和使用简单可理解。

    resque是基于redis的后台任务组件,能把任何类或模块作为任务在后台执行,且自带前台管理功能,方便查看执行情况。

    使用

    1. 编写任务

    复制代码
    class WorkerClass
      @queue = :run_task
      def self.perform(args)  //参数可以多个
        ........
        puts "Doing something complex with  #{args}"
      end
    end
    复制代码

    2. 进入任务队列

    require "resque"
    Resque.enqueue(WorkerClass, args)   //其中WorkerClass对应下面的任务类,args是传给WorkerClass类的参数

    3. 运行任务

    与rails3整合

    0. 配置redis
    新增 config/redis.yml 文件,加入以下内容

    复制代码
    defaults: &defaults
      host: localhost
      port: 6379
    
    development:
      <<: *defaults
    
    test:
      <<: *defaults
    
    staging:
      <<: *defaults
    
    production:
      <<: *defaults
    复制代码

    1. 加载resque

    echo "require 'resque'" > config/initializers/load_resque.rb
    config = YAML::load(File.open("#{Rails.root}/config/redis.yml"))[Rails.env]
    Resque.redis = Redis.new(:host => config['host'], :port => config['port'])

    2. 由于worker类都放在app/jobs,因此需要指定rails加载此目录
    修改 config/application.rb,加入以下内容

    config.autoload_paths += %W(#{config.root}/app/jobs)

    3. 加入rake任务
    修改 @RakeFile@,加入以下内容

    require ‘resque/tasks’
    task “resque:setup” => :environment

    第二句指明运行 resque:setup 前先初始化rails环境

    运行resque后台任务

    QUEUE=* rake resque:work

    查看任务执行情况(用于调试)

    #运行resque前台管理服务器
    resque-web -p 8282
    #打开浏览器,访问 http://0.0.0.0:8282
    #前台可以查看失败的worker及其日志,可以手动执行retry操作

    定时任务

    如需定时执行任务,可以使用 resque-scheduler

    测试

    在测试的时候我们不需要测试过程与resque是异步的,否则resque执行的时候数据可能已经被清空了,使用resque_spec插件可以让resque worker立即执行

    详情查看 https://github.com/leshill/resque_spec

  • 相关阅读:
    struts2 easyui实现datagrid的crud
    Codeforces 10A-Power Consumption Calculation(模拟)
    Java5新特性之枚举
    [总结]视音频编解码技术零基础学习方法
    (三 )kafka-jstorm集群实时日志分析 之 ---------jstorm集成spring 续(代码)
    codeforces Looksery Cup 2015 H Degenerate Matrix 二分 注意浮点数陷阱
    NHibernate3剖析:Query篇之NHibernate.Linq增强查询
    hdoj 1013Digital Roots
    小Y的难题
    【前端JS】radio 可单选可点击取消选中
  • 原文地址:https://www.cnblogs.com/x123811/p/6026243.html
Copyright © 2011-2022 走看看