class PubsubClient::Subscriber

Constants

DEFAULT_CONCURRENCY

Public Class Methods

new(subscription) click to toggle source

@param subscription [Google::Cloud::PubSub::Subscription]

# File lib/pubsub_client/subscriber.rb, line 10
def initialize(subscription)
  @subscription = subscription
end

Public Instance Methods

listener(concurrency: DEFAULT_CONCURRENCY, auto_ack: true) { |data, received_message| ... } click to toggle source

@param concurrency [Integer] - The number of threads to run the subscriber with. Default is 8. @param auto_ack [Boolean] - Flag to acknowledge the Pub/Sub message. A message must be acked to remove it from the topic. Default is `true`.

@return [Google::Cloud::PubSub::Subscriber]

# File lib/pubsub_client/subscriber.rb, line 19
def listener(concurrency: DEFAULT_CONCURRENCY, auto_ack: true, &block)
  @listener ||= begin
    @subscription.listen(threads: { callback: concurrency }) do |received_message|
      yield received_message.data, received_message
      received_message.acknowledge! if auto_ack
    end
  end
end
on_error() { |exception| ... } click to toggle source
# File lib/pubsub_client/subscriber.rb, line 40
def on_error(&block)
  raise ConfigurationError, 'A listener must be configured' unless @listener

  @listener.on_error do |exception|
    yield exception
  end
end
subscribe() click to toggle source
# File lib/pubsub_client/subscriber.rb, line 28
def subscribe
  raise ConfigurationError, 'A listener must be configured' unless @listener

  begin
    @listener.start

    sleep
  rescue SignalException
    @listener.stop.wait!
  end
end