class GRPC::Kit::Queue::Worker::Runner

Public Class Methods

new(params) click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 6
def initialize(params)
  @topic_name        = params[:topic]
  @subscription_name = "#{params[:topic]}.#{params[:worker]}"
  @worker_class      = params[:worker]
end
run!(params) click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 12
def self.run!(params)
  new(params).run!
end

Public Instance Methods

run!() click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 16
def run!
  if worker.nil?
    GRPC.logger.error("class #{@worker_class} does not exist")
    exit
  end

  subscription.listen do |msg|
    worker.new(msg).call
  end
end

Private Instance Methods

pubsub() click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 43
def pubsub
  @pubsub ||= Google::Cloud::Pubsub.new
end
subscription() click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 35
def subscription
  @subscription ||= topic.subscription(@subscription_name) || topic.subscribe(@subscription_name)
end
topic() click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 39
def topic
  @topic ||= pubsub.topic(@topic_name) || pubsub.create_topic(@topic_name)
end
worker() click to toggle source
# File lib/grpc/kit/queue/worker/runner.rb, line 29
def worker
  Object.const_get(@worker_class)
rescue NameError
  nil
end