class Fluent::GcloudPubSub::Publisher

Constants

RETRYABLE_ERRORS
RETRY_COUNT

Public Class Methods

new(project, key, topic_name, skip_lookup) click to toggle source

autocreate_topic is unused

# File lib/fluent/plugin/gcloud_pubsub/client.rb, line 16
def initialize(project, key, topic_name, skip_lookup)
  Retryable.retryable(tries: RETRY_COUNT, on: RETRYABLE_ERRORS) do
    pubsub = Google::Cloud::Pubsub.new project: project, keyfile: key
    @client = pubsub.topic topic_name, skip_lookup: skip_lookup
  end
  raise Error.new "topic:#{topic_name} does not exist." if @client.nil?
end

Public Instance Methods

publish(messages) click to toggle source
# File lib/fluent/plugin/gcloud_pubsub/client.rb, line 24
def publish(messages)
  @client.publish do |batch|
    messages.each do |m|
      batch.publish m
    end
  end
rescue Google::Cloud::UnavailableError, Google::Cloud::DeadlineExceededError, Google::Cloud::InternalError => ex
  raise RetryableError.new "Google api returns error:#{ex.class.to_s} message:#{ex.to_s}"
end