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
endUsage
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 = :barbequeAnd 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