# Cloud Pub/Sub API - Module Google::Cloud::PubSub (v3.3.0)

3.3.0 (latest) 3.2.1 3.1.1 3.0.3 2.23.0 2.22.0 2.21.0 2.20.0 2.19.0 2.18.1 2.17.0 2.16.0 2.15.5 2.14.0 2.12.1 2.11.0 2.10.0 2.9.2 Reference documentation and code samples for the Cloud Pub/Sub API module Google::Cloud::PubSub.

## 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](https://docs.cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/OVERVIEW "Google Cloud Pub/Sub Overview").

## Methods

### .configure

    def self.configure() -> Google::Cloud::Config

Configure the Google Cloud PubSub library.

The following PubSub configuration parameters are supported:

- `project_id` - (String) Identifier for a PubSub project.
- `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](https://docs.cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/Google-Cloud-PubSub-Credentials "Google::Cloud::PubSub::Credentials (class)"))
- `scope` - (String, Array
- `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 [MessageListener#on_error](https://docs.cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/Google-Cloud-PubSub-MessageListener#Google__Cloud__PubSub__MessageListener_on_error_instance_ "Google::Cloud::PubSub::MessageListener#on_error (method)").)
**Yields**

- (Google::Cloud.configure.pubsub)
**Returns**

- (Google::Cloud::Config) --- The configuration object the Google::Cloud::PubSub library uses.

### .new

    def self.new(project_id: nil, credentials: nil, scope: nil, timeout: nil, universe_domain: nil, endpoint: nil, emulator_host: nil, logger: nil) -> Google::Cloud::PubSub::Project

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


<br />

For more information on connecting to Google Cloud see the
[Authentication Guide](https://docs.cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/AUTHENTICATION "Authentication Guide").
**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** (Google::Auth::Credentials) *(defaults to: nil)* --- A Google::Auth::Credentials object. (See [Credentials](https://docs.cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/Google-Cloud-PubSub-Credentials "Google::Cloud::PubSub::Credentials (class)")) @note Warning: Passing a `String` to a keyfile path or a `Hash` of credentials is deprecated. Providing an unvalidated credential configuration to Google APIs can compromise the security of your systems and data.


  @example

  # The recommended way to provide credentials is to use the `make_creds` method
  # on the appropriate credentials class for your environment.

  require "googleauth"

  credentials = ::Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: ::File.open("/path/to/keyfile.json")
  )

  pubsub = Google::Cloud::Pubsub.new project_id: "my-project", credentials: 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](https://developers.google.com/identity/protocols/OAuth2).

  The default scope is:
  - `https://www.googleapis.com/auth/pubsub`
- **timeout** (Numeric) *(defaults to: nil)* --- Default timeout to use in requests. Optional.
- **universe_domain** (String) *(defaults to: nil)* --- A custom universe domain. 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.
- **logger** (Logger) *(defaults to: nil)* --- Optional Logger instance for emitting library-level debug logs. If not provided, it will default to configure.logger, which defaults to Logger.new STDOUT if not set. To enable logging, set environment variable GOOGLE_SDK_RUBY_LOGGING_GEMS to "all" or a comma separated list of gem names, including "pubsub".
**Returns**

- ([Google::Cloud::PubSub::Project](https://docs.cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/Google-Cloud-PubSub-Project))
**Raises**

- (ArgumentError)
**Example**

```ruby
require "google/cloud/pubsub"

pubsub = Google::Cloud::PubSub.new

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

## Constants

### DEFAULT_COMPRESS

**value:**false

### DEFAULT_COMPRESSION_BYTES_THRESHOLD

**value:**240

### VERSION

**value:**"3.3.0".freeze