Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Feb 27, 2021. It is now read-only.

ursm/activejob-google_cloud_pubsub

Repository files navigation

ActiveJob::GoogleCloudPubsub

Build Status Gem Version

Google Cloud Pub/Sub adapter and worker for ActiveJob

Installation

gem 'activejob-google_cloud_pubsub'

Usage

First, change the ActiveJob backend.

Rails.application.config.active_job.queue_adapter = :google_cloud_pubsub

Write the Job class and code to use it.

class HelloJob < ApplicationJob
 def perform(name)
 puts "hello, #{name}!"
 end
end
class HelloController < ApplicationController
 def say
 HelloJob.perform_later params[:name]
 end
end

In order to test the worker in your local environment, it is a good idea to use the Pub/Sub emulator provided by gcloud command. Refer to this document for the installation procedure.

When the installation is completed, execute the following command to start up the worker.

$ gcloud beta emulators pubsub start
(Switch to another terminal)
$ eval `gcloud beta emulators pubsub env-init`
$ cd path/to/your-app
$ bundle exec activejob-google_cloud_pubsub-worker --project_id=dummy

If you hit the previous action, the job will be executed. (Both the emulator and the worker stop with Ctrl+C)

Configuration

Adapter

When passing options to the adapter, you need to create the object instead of a symbol.

Rails.application.config.active_job.queue_adapter = ActiveJob::GoogleCloudPubsub::Adapter.new(
 async: false,
 logger: Rails.logger,
 pubsub: Google::Cloud::Pubsub.new(
 project_id: 'MY-PROJECT-ID',
 credentials: 'path/to/keyfile.json'
 )
)

async

Whether to publish messages asynchronously.

Default: true

logger

The logger that outputs a message publishing error. Specify nil to disable logging.

Default: Logger.new($stdout)

pubsub

The instance of Google::Cloud::Pubsub::Project. Please see Google::Cloud::Pubsub.new for details.

Default: Google::Cloud::Pubsub.new

Worker

The following command line flags can be specified. All flags are optional.

--require=PATH

The path of the file to load before the worker starts up.

Default: ./config/environment

--queue=NAME

The name of the queue the worker handles.

Note: One worker can handle only one queue. If you use multiple queues, you need to launch multiple worker processes.

Default: default

--min_threads=N

Minimum number of worker threads.

Default: 0

--max_threads=N

Maximum number of worker threads.

Default: number of logical cores

--project_id=PROJECT_ID, --credentials=KEYFILE_PATH

Credentials of Google Cloud Platform. Please see the document for details.

Development

$ bundle exec rake spec

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ursm/activejob-google_cloud_pubsub.

License

The gem is available as open source under the terms of the MIT License.

About

Google Cloud Pub/Sub adapter and worker for ActiveJob

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /