# Release History ### 0.37.1 / 2019-07-09 * Add IAM GetPolicyOptions in the lower-level interface. * Support overriding service host and port in the low-level interface. * Fixed race in TimedUnaryBuffer. ### 0.37.0 / 2019-06-17 * Add Topic#persistence_regions * Subscriber changes * Fix potential inventory bug * Messages are removed after callback * This change prevents the Subscriber inventory from filling up when messages are never acked or nacked in the user callback. This might happen due to an error in the user callback code. Removing a message from the inventory will cause the message to be redelivered and reprocessed. * Update concurrency implementation * Use concurrent-ruby Promises framework. * Update network configuration * Enable grpc.service_config_disable_resolution ### 0.36.0 / 2019-05-21 * Add Topic#kms_key * Add the Cloud KMS encryption key that will be used to protect access to messages published on a topic. * Updates to the low-level API: * Add Topic#kms_key_name (experimental) * Snapshots no longer marked beta. * Update IAM documentation. ### 0.35.0 / 2019-04-25 * Add Subscription#push_config and Subscription::PushConfig * Add Subscription#expires_in * Add Topic#reload! * Add Subscription#reload! * Update low-level generated files * Add PushConfig#oidc_token * Add ordering_key to PubsubMessage. * Add enable_message_ordering to Subscription. * Extract gRPC header values from request. * Update documentation. ### 0.34.1 / 2019-02-13 * Fix bug (typo) in retrieving default on_error proc. * Update network configuration. ### 0.34.0 / 2019-02-01 * Switch to use Google::Cloud::PubSub namespace. * Add PubSub on_error configuration. * Major updates to Subscriber * Add dependency on current-ruby. * Updates are now made using unary API calls, not the gRPC stream. * Update Subscriber inventory lease mechanics: * This change will help avoid race conditions by ensuring that inventory lease renewal actions don't override ack/nack/delay actions made on a received message via the Subscriber callback. * Changes to avoid potential race conditions in updates. * Add reference?/resource? helper methods: * Topic#reference? * Topic#resource? * Subscription#reference? * Subscription#resource? * Add documentation for methods that will make an API call when called on a reference object. * Topic#labels * Subscription#topic * Subscription#deadline * Subscription#retain_acked * Subscription#retention * Subscription#endpoint * Subscription#labels * Subscription#exists? * Subscription#listen (without deadline optional argument) * Add example code for avoiding API calls to Overview guide. * Remove the #delay alias for modify_ack_deadline. * Users should use the modify_ack_deadline and modify_ack_deadline! methods directly instead. * Make use of Credentials#project_id * Use Credentials#project_id If a project_id is not provided, use the value on the Credentials object. This value was added in googleauth 0.7.0. * Loosen googleauth dependency Allow for new releases up to 0.10. The googleauth devs have committed to maintaining the current API and will not make backwards compatible changes before 0.10. * Update low level API * Add expiration_policy field * Numerous updates and fixes to the low-level documentation, including fixes for some broken links.i ### 0.33.2 / 2018-10-29 * Rename delay methods to modify_ack_deadline * Rename modify_ack_deadling aliases to delay * This maintains backwards compatibility ### 0.33.1 / 2018-10-03 * Update connection configuration. * Treat Acknowledge as idempotent. ### 0.33.0 / 2018-09-20 * Add support for user labels to Snapshot, Subscription and Topic. * Update documentation. * Change documentation URL to googleapis GitHub org. * Fix circular require warning. ### 0.32.2 / 2018-09-12 * Add missing documentation files to package. ### 0.32.1 / 2018-09-10 * Fix issue where client_config was not being used on publisher API calls. * Update documentation. ### 0.32.0 / 2018-08-14 * Updated Subscriber implementation * Revised shutdown mechanics * Fixes stop and wait! would hanging indefinitely. * Reduce the number of GRPC warnings printed. * Added error callbacks to the API * Use error handler to be notified when unhandled errors occur on a subscriber's stream thread. * Documentation updates. ### 0.31.1 / 2018-08-14 * Fix bug in AsyncUnaryPusher, * The modify_ack_deadline requests were malformed. ### 0.31.0 / 2018-06-12 * Switch Subscriber to use unary RPC calls for ack/modack. * Reduce number of String objects that are garbage collected. * Documentation updates. ### 0.30.2 / 2018-04-02 * Subscriber stability enhancements. * Subscriber performance enhancements. ### 0.30.1 / 2018-03-08 * Fix Subscriber thread leak. ### 0.30.0 / 2018-02-27 * Support Shared Configuration. * Fix issue with IAM Policy not refreshing properly. ### 0.29.0 / 2017-12-19 * Update Subscriber's receipt of received messages. * Refactor Subscriber implementation to fix some threading bugs. * Update google-gax dependency to 1.0. ### 0.28.1 / 2017-11-21 * Remove warning when connecting to Pub/Sub Emulator. ### 0.28.0 / 2017-11-14 * Add `Google::Cloud::Pubsub::Credentials` class. * Rename constructor arguments to `project_id` and `credentials`. (The previous arguments `project` and `keyfile` are still supported.) * Document `Google::Auth::Credentials` as `credentials` value. * Update generated low level GAPIC code. * Updated `google-gax` (`grpc`, `google-protobuf`), `googleauth` dependencies. ### 0.27.2 / 2017-10-18 * Update documentation ### 0.27.1 / 2017-10-11 * Add keepalive to gRPC connections. * Update Subscriber Streaming Messages error handling * Fix link in README ### 0.27.0 / 2017-08-10 This is a major release that offers new functionality. It adds the ability to asynchronously publish batches of messages when a threshold is met (batch message count, total batch size, batch age). It also adds the ability to receive and acknowledge messages via multiple streams. * Publishing Messages Asynchronously * `Topic#publish_async` and `AsyncPublisher` added * `AsyncPublisher` can be stopped * `PublishResult` object is yielded from `Topic#publish_async` * Subscriber Streaming Messages * `Subscription#listen` changed to return a `Subscriber` object * `Subscriber` can open multiple streams to pull messages * `Subscriber` must be started to begin streaming messages * `Subscriber` can be stopped * `Subscriber`'s received messages are leased until acknowledged or rejected * Other Additions * `ReceivedMessage#reject!` method added (aliased as `nack!` and `ignore!`) * `Message#published_at` attribute was added * Removals * `Project#publish` method has been removed * `Project#subscribe` method has been removed * `Project#topic` method argument `autocreate` was removed * `Subscription#pull` method argument `autoack` was removed * `Subscription#wait_for_messages` method argument `autoack` was removed ### 0.26.0 / 2017-07-11 * Update GAPIC configuration to exclude `UNAVAILABLE` errors from automatic retry. * Update initialization to raise a better error if project ID is not specified. ### 0.25.0 / 2017-06-01 * Add Snapshot and Subscription#seek. * Add Subscription#retain_acked and Subscription#retention. * Update gem spec homepage links. * Remove memoization of Policy. * Remove force parameter from Subscription#policy and Topic#policy. * Remove Policy#deep_dup. * Configure gRPC max_send_message_length and max_receive_message_length to accommodate max message size > 4 MB. ### 0.24.0 / 2017-03-31 * Updated documentation * Updated retry configuration for pull requests * Automatic retry on `UNAVAILABLE` errors ### 0.23.2 / 2017-03-03 * No public API changes. * Update GRPC header value sent to the Pub/Sub API. ### 0.23.1 / 2017-03-01 * No public API changes. * Update GRPC header value sent to the Pub/Sub API. * Low level API adds new Protobuf types and GAPIC methods. ### 0.23.0 / 2017-02-21 * Add emulator_host parameter * Fix GRPC retry bug * The client_config data structure has replaced retry_codes/retry_codes_def with retry_codes * Update GRPC/Protobuf/GAX dependencies ### 0.22.0 / 2017-01-26 * Change class names in low-level API (GAPIC) * Change method parameters in low-level API (GAPIC) * Add LICENSE to package. ### 0.21.0 / 2016-10-20 * New service constructor Google::Cloud::Pubsub.new * New constructor argument client_config ### 0.20.1 / 2016-09-02 * Fix an issue with the GRPC client and forked sub-processes ### 0.20.0 / 2016-08-26 This gem contains the Google Cloud Pub/Sub service implementation for the `google-cloud` gem. The `google-cloud` gem replaces the old `gcloud` gem. Legacy code can continue to use the `gcloud` gem. * Namespace is now `Google::Cloud` * The `google-cloud` gem is now an umbrella package for individual gems