Module: Google::Cloud::PubSub

Defined in:
lib/google/cloud/pubsub.rb,
lib/google/cloud/pubsub/topic.rb,
lib/google/cloud/pubsub/errors.rb,
lib/google/cloud/pubsub/policy.rb,
lib/google/cloud/pubsub/schema.rb,
lib/google/cloud/pubsub/convert.rb,
lib/google/cloud/pubsub/message.rb,
lib/google/cloud/pubsub/project.rb,
lib/google/cloud/pubsub/service.rb,
lib/google/cloud/pubsub/version.rb,
lib/google/cloud/pubsub/snapshot.rb,
lib/google/cloud/pubsub/subscriber.rb,
lib/google/cloud/pubsub/topic/list.rb,
lib/google/cloud/pubsub/credentials.rb,
lib/google/cloud/pubsub/schema/list.rb,
lib/google/cloud/pubsub/retry_policy.rb,
lib/google/cloud/pubsub/subscription.rb,
lib/google/cloud/pubsub/snapshot/list.rb,
lib/google/cloud/pubsub/publish_result.rb,
lib/google/cloud/pubsub/async_publisher.rb,
lib/google/cloud/pubsub/batch_publisher.rb,
lib/google/cloud/pubsub/flow_controller.rb,
lib/google/cloud/pubsub/received_message.rb,
lib/google/cloud/pubsub/subscriber/stream.rb,
lib/google/cloud/pubsub/subscription/list.rb,
lib/google/cloud/pubsub/acknowledge_result.rb,
lib/google/cloud/pubsub/subscriber/inventory.rb,
lib/google/cloud/pubsub/subscriber/sequencer.rb,
lib/google/cloud/pubsub/async_publisher/batch.rb,
lib/google/cloud/pubsub/subscription/push_config.rb,
lib/google/cloud/pubsub/subscriber/enumerator_queue.rb,
lib/google/cloud/pubsub/subscriber/timed_unary_buffer.rb

Overview

Google Cloud Pub/Sub

Google Cloud Pub/Sub is designed to provide reliable, many-to-many, asynchronous messaging between applications. Publisher applications can send messages to a "topic" and other applications can subscribe to that topic to receive the messages. By decoupling senders and receivers, Google Cloud Pub/Sub allows developers to communicate between independently written applications.

See Google Cloud Pub/Sub Overview.

Defined Under Namespace

Classes: AcknowledgeResult, AsyncPublisher, AsyncPublisherStopped, BatchPublisher, Credentials, FlowControlLimitError, Message, OrderedMessageDeliveryError, OrderedMessagesDisabled, OrderingKeyError, Policy, Project, PublishResult, ReceivedMessage, RetryPolicy, Schema, Snapshot, Subscriber, Subscription, Topic

Constant Summary collapse

DEFAULT_COMPRESS =
false
DEFAULT_COMPRESSION_BYTES_THRESHOLD =
240
VERSION =
"2.19.0".freeze

Class Method Summary collapse

Class Method Details

.configure {|Google::Cloud.configure.pubsub| ... } ⇒ Google::Cloud::Config

Configure the Google Cloud PubSub library.

The following PubSub configuration parameters are supported:

  • project_id - (String) Identifier for a PubSub project. (The parameter project is considered deprecated, but may also be used.)
  • credentials - (String, Hash, Google::Auth::Credentials) The path to the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See Credentials) (The parameter keyfile is considered deprecated, but may also be used.)
  • scope - (String, Array) The OAuth 2.0 scopes controlling the set of resources and operations that the connection can access.
  • quota_project - (String) The project ID for a project that can be used by client libraries for quota and billing purposes.
  • timeout - (Numeric) Default timeout to use in requests.
  • endpoint - (String) Override of the endpoint host name, or nil to use the default endpoint.
  • emulator_host - (String) Host name of the emulator. Defaults to ENV["PUBSUB_EMULATOR_HOST"]
  • on_error - (Proc) A Proc to be run when an error is encountered on a background thread. The Proc must take the error object as the single argument. (See Google::Cloud::PubSub::Subscriber#on_error.)

Yields:

Returns:

  • (Google::Cloud::Config)

    The configuration object the Google::Cloud::PubSub library uses.



141
142
143
144
145
# File 'lib/google/cloud/pubsub.rb', line 141

def self.configure
  yield Google::Cloud.configure.pubsub if block_given?

  Google::Cloud.configure.pubsub
end

.new(project_id: nil, credentials: nil, scope: nil, timeout: nil, universe_domain: nil, endpoint: nil, emulator_host: nil, project: nil, keyfile: nil) ⇒ Google::Cloud::PubSub::Project

Creates a new object for connecting to the Pub/Sub service. Each call creates a new connection.

For more information on connecting to Google Cloud see the Authentication Guide.

Examples:

require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

topic = pubsub.topic "my-topic"
topic.publish "task completed"

Parameters:

  • project_id (String) (defaults to: nil)

    Project identifier for the Pub/Sub service you are connecting to. If not present, the default project for the credentials is used.

  • credentials (String, Hash, Google::Auth::Credentials) (defaults to: nil)

    The path to the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See Credentials)

  • scope (String, Array<String>) (defaults to: nil)

    The OAuth 2.0 scopes controlling the set of resources and operations that the connection can access. See Using OAuth 2.0 to Access Google APIs.

    The default scope is:

    • https://www.googleapis.com/auth/pubsub
  • timeout (Numeric) (defaults to: nil)

    Default timeout to use in requests. Optional.

  • endpoint (String) (defaults to: nil)

    Override of the endpoint host name. Optional. If the param is nil, uses the default endpoint.

  • emulator_host (String) (defaults to: nil)

    Pub/Sub emulator host. Optional. If the param is nil, uses the value of the emulator_host config.

  • project (String) (defaults to: nil)

    Alias for the project_id argument. Deprecated.

  • keyfile (String) (defaults to: nil)

    Alias for the credentials argument. Deprecated.

  • universe_domain (String) (defaults to: nil)

    A custom universe domain. Optional.

Returns:

Raises:

  • (ArgumentError)


77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/google/cloud/pubsub.rb', line 77

def self.new project_id: nil,
             credentials: nil,
             scope: nil,
             timeout: nil,
             universe_domain: nil,
             endpoint: nil,
             emulator_host: nil,
             project: nil,
             keyfile: nil
  project_id ||= project || default_project_id
  scope ||= configure.scope
  timeout ||= configure.timeout
  endpoint ||= configure.endpoint
  universe_domain ||= configure.universe_domain
  emulator_host ||= configure.emulator_host

  if emulator_host
    credentials = :this_channel_is_insecure
    endpoint = emulator_host
  else
    credentials ||= keyfile || default_credentials(scope: scope)
    unless credentials.is_a? Google::Auth::Credentials
      credentials = PubSub::Credentials.new credentials, scope: scope
    end
  end

  project_id ||= credentials.project_id if credentials.respond_to? :project_id
  project_id = project_id.to_s # Always cast to a string
  raise ArgumentError, "project_id is missing" if project_id.empty?

  service = PubSub::Service.new project_id, credentials,
                                host: endpoint,
                                timeout: timeout,
                                universe_domain: universe_domain
  PubSub::Project.new service
end