Skip to content

cookpad/barbeque_client

Repository files navigation

BarbequeClient Build Status

Barbeque client for Ruby.

Installation

Add this line to your application's Gemfile:

gem 'barbeque_client'

And create "config/initializers/barbeque.rb" and edit it like:

BarbequeClient.configure do |config|
  config.application   = 'cookpad'
  config.default_queue = 'default'
  config.endpoint      = 'https://barbeque.example.com'
  config.headers = { 'Host' => 'barbeque' } # optional
end

Usage

Enqueuing a job

execution = BarbequeClient.enqueue(
  job:     'NotifyAuthor',       # @param [String] job     - Job name to enqueue.
  message: { user_id: 7553989 }, # @param [Object] message - An object which is serializable as JSON.
  queue:   'default',            # @param optional [String] queue - A queue name to enqueue a job.
  delay_seconds: 0,              # @param optional [Integer] delay_seconds - Message timer of SQS.
)
execution.message_id #=> "a3c653c1-335e-4d4d-a6f9-eb91c0253d02"
execution.status     #=> "pending"

Polling the job's status

message_id = "a3c653c1-335e-4d4d-a6f9-eb91c0253d02"
BarbequeClient.status(message_id: message_id) #=> "success"

With Rails

Barbeque client has adapter for ActiveJob.

# config/environments/some_environment.rb
Rails.application.config.active_job.queue_adapter = :barbeque

And everything will be ok. Don't forget to setup config.application and config.endpoint in somewhere. One more thing, config.default_queue option is meaningless with Rails. default_queue is the fallback option for enqueueing without specified queue name. However, ActiveJob always set default queue as 'default' internally, there is no place to work on. So please use queue_as when you want to use different queue name.

Distributed tracing

Configure tracing option. Pick one of supported tracers. See more detail in https://github.com/cookpad/garage_client#tracing.

BarbequeClient.configure do |config|
  # ...
  config.tracing = { tracer: 'aws-xray', service: 'barbeque' }
end