Giter Club home page Giter Club logo

ons_on_rails's Introduction

GitHub issues GitHub forks GitHub stars Yard Docs Gem Version License

OnsOnRails

整合阿里云 ONS 到 Rails 项目

项目依赖

  • Linux/Unix 系统
  • Ruby 2.1.5 或以上版本
  • Rails 4.1.0 或以上版本

如何使用

配置 Rails 环境

在 Gemfile 添加依赖规则

gem 'ons', group: :linux
gem 'ons_on_rails'

在 config/application.rb 添加 require 规则

Bundler.require(*Rails.groups)
Bundler.require(RUBY_PLATFORM.match(/(linux|darwin)/)[0].to_sym)

在 config/ 目录下添加配置文件 ons_on_rails.yml

#
# access_key,阿里云官网身份验证访问码
# secret_key,阿里云身份验证密钥
#
# daemon_name 消费者守护进程名称, 默认为: ons_subscriber [当前项目名称]
# user_service_subscriber,消费者名称,需要与实际定义的类名信息保持一致,具体见下文的消费者章节
# user_service_subscriber#consumer_id,阿里云 MQ 控制台创建的 Consumer ID
# user_service_subscriber#topic,阿里云 MQ 控制台创建的 Topic
# user_service_subscriber#tag,当前消费者订阅的 Topic 下所关注的消息标签表达式
#
# user_service_publisher,生成者名称,具体见下文的生成者章节
# user_service_publisher#producer_id,阿里云 MQ 控制台创建的 Producer ID
# user_service_publisher#topic,阿里云 MQ 控制台创建的 Topic
# user_service_publisher#tag,当前生成者发布的消息所使用的消息标签
#
default: &default
  access_key: <%= ENV['ONS_ACCESS_KEY'] %>
  secret_key: <%= ENV['ONS_SECRET_KEY'] %>
  
  daemon_name: <%= ENV['ONS_DAEMON_NAME'] %>
  user_service_subscriber:
    consumer_id: <%= ENV['ONS_CONSUMER_ID'] %>
    topic: <%= ENV['ONS_TOPIC'] %>
    tag: 'user_service'
    
  user_service_publisher:
    producer_id: <%= ENV['ONS_PRODUCER_ID'] %>
    topic: <%= ENV['ONS_TOPIC'] %>
    tag: 'user_service'

development:
  <<: *default

test:
  <<: *default

production:
  <<: *default

消费者

在 app/subscribers 目录下添加消费者实现文件,比如 user_service_subscriber.rb

# 注意,类名应当与 config/ons_on_rails.yml 中的配置保持一致
class UserServiceSubscriber
  include OnsOnRails::Subscriber

  def consume(message)
    # do something...
  end
end

启动或关闭消费者进程,此进程会与阿里云 MQ 建立 TCP 连接,然后在本地消费消息

$ bundle exec ons_sub [start|stop|restart]

# get commands help 
$ bundle exec ons_sub -h

另一种启动方式

在 daemons/ 目录下添加守护进程定义文件,比如 user_service_subscriber_control.rb

require 'rubygems'
require 'ons_on_rails'

APP_PATH = File.expand_path('../..', __FILE__)
OnsOnRails.run_subscriber_as_a_daemon(:user_service_subscriber, APP_PATH)

启动或关闭消费者进程

$ RAILS_ENV=development bundle exec ruby daemons/user_service_subscriber_control.rb start
$ RAILS_ENV=development bundle exec ruby daemons/user_service_subscriber_control.rb stop

生产者

在 config/initializers/ 目录下添加初始化文件,比如 ons_on_rails.rb

# 注意,第一个参数应当与 config/ons_on_rails.yml 中的配置保持一致
$user_service_publisher = OnsOnRails.create_publisher(:user_service_publisher, backend: :tcp)

调用 OnsOnRails::Publisher#publish 方法

$user_service_publisher.publish(operate: :create, user: { name: '123456lkjhgf' })

测试相关

设置 OnsOnRails::Publisher 的 backend 为 :test 方法即可,这样生产者会将消息保存到 OnsOnRails::Publisher.deliveries 数组中

ons_on_rails's People

Contributors

yiichou avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.