View Source Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

unreleased

Unreleased

0-9-0-2023-11-06

0.9.0 - 2023-11-06

changed

Changed

  • Requires Elixir v1.11+.

  • Relax nimble_options dependency.

  • Optional dependency goth must be v1.3+.

  • Possible breaking change: The default token generator requires the :goth option to fetch tokens.

    If you had not yet upgraded to Goth v1.3+ please follow the upgrade guide. Then wherever you invoke Broadway.start_link/2, add the :goth option:

    producer: [
      module:
        {BroadwayCloudPubSub.Producer,
         goth: MyApp.Goth,
         subscription: "projects/<your-project-id>/subscriptions/<your-subscription-id>"}
    ]

    If you had previously upgraded to Goth v1.3+ then wherever you invoke Broadway.start_link/2, you may have something like the following:

    producer: [
      module:
        {BroadwayCloudPubSub.Producer,
         subscription: "projects/<your-project-id>/subscriptions/<your-subscription-id>",
         token_generator: {MyApp, :fetch_token, []}}
    ]

    ...where MyApp.fetch_token/0 is similar to the following:

    defmodule MyApp
      def fetch_token do
        with {:ok, token} <- Goth.fetch(MyApp.Goth) do
          {:ok, token.token}
        end
      end
    end

    You can remove your custom token generator function and replace your producer config with this:

    producer: [
      module:
        {BroadwayCloudPubSub.Producer,
         goth: MyApp.Goth,
         subscription: "projects/<your-project-id>/subscriptions/<your-subscription-id>"}
    ]

added

Added

  • The :goth option specifies the Goth server for the default token generator.

removed

Removed

  • The :scope option has been removed. You may set custom scopes on your own Goth server via the :source option.

    For example, if you want to use the scope "https://www.googleapis.com/auth/pubsub", then wherever you start Goth add the :scopes option to your authentication source:

      # The `:metadata` source type retrieves credentials from Google metadata servers.
      # Refer to the Goth documentation for more source options.
      source = {:metadata, scopes: ["https://www.googleapis.com/auth/pubsub"]}
    
      children = [
        {Goth, name: MyApp.Goth, source: source}
      ]

0-8-0-2022-10-26

0.8.0 - 2022-10-26

This version moves Cloud PubSub from Tesla to Finch, so read the notes below and upgrade with care.

added-1

Added

  • Use :finch as the HTTP client and provide a :finch producer option for a user-defined HTTP pool

  • Make HTTP requests in a separate process for cleaner shutdown

  • Support multiple topologies from the same Brodway module

  • Add telemetry events around HTTP requests

  • Add :deliveryAttempt field to metadata

removed-1

Removed

  • The :pool_size option has been removed. Define your own Finch pool and use the :finch option instead.

    For example, if your :pool_size was 10, then add Finch to your application supervision tree (usually located in lib/my_app/application.ex):

    children =
      [
        {Finch, name: MyFinch, pools: %{:default => [size: 10]}}
      ]

    ...and wherever you invoke Broadway.start_link/2, replace this:

    producer: [
      module:
        {BroadwayCloudPubSub.Producer,
         subscription: "projects/<your-project-id>/subscriptions/<your-subscription-id>",
         pool_size: 10}
    ]

    ...with this:

    producer: [
      module:
        {BroadwayCloudPubSub.Producer,
         subscription: "projects/<your-project-id>/subscriptions/<your-subscription-id>",
         finch: MyFinch}
    ]

0-7-1-2022-05-09

0.7.1 - 2022-05-09

added-2

Added

  • Add :receive_timeout option

0-7-0-2021-08-30

0.7.0 - 2021-08-30

changed-1

Changed

  • Require Broadway 1.0

0-6-3-2021-07-19

0.6.3 - 2021-07-19

changed-2

Changed

  • Remove sensitive details from error log messages

added-3

Added

  • A new :middleware option to pass a list of custom Tesla middleware
  • Failures to ack are now automatically retried. Retries can be customised via the new :retry option

0-6-2-2021-02-24

0.6.2 - 2021-02-24

changed-3

Changed

  • Fixed a bug causing malformed acknowledgement requests (#54)

0-6-1-2021-02-23

0.6.1 - 2021-02-23

changed-4

Changed

  • Decreased maximum number of ackIds per request (#49)

0-6-0-2020-02-18

0.6.0 - 2020-02-18

added-4

Added

  • Support for passing a tuple for the scope option

changed-5

Changed

0-5-0-2019-11-06

0.5.0 - 2019-11-06

added-5

Added

  • Client options for connection pools (#37)

  • Support for configuring acknowledgement behavior (#36)

changed-6

Changed

  • Move acknowledger behaviour from GoogleApiClient into ClientAcknowledger (#39)

0-4-0-2019-08-19

0.4.0 - 2019-08-19

changed-7

Changed

  • Move to Plataformatec GitHub organization and become an official Broadway connector

  • Rename behaviour RestClient to Client (#23)

  • Use hackney as the default adapter (#20)

  • Require Broadway 0.4.x and (optionally) Goth 1.x (#26)

  • Replace :token_module option with :token_generator (#29)

  • Hide handle_receive_messages function that was accidentally made public

0-3-0-2019-05-08

0.3.0 - 2019-05-08

changed-8

Changed

  • BREAKING: The PubsubMessage struct now gets unpacked into the %Broadway.Message{} received in your pipeline. If you were using message.data.data before, you can now use message.data. Additional properties from the PubsubMessage can be found in the message metadata, for instance: message.metadata.attributes or message.metadata.messageId.
  • Requires :broadway ~> 0.3.0

0-1-3-2019-05-06

0.1.3 - 2019-05-06

changed-9

Changed

  • Fixed BroadwayCloudPubSub.GoogleApiClient attempting to send an empty acknowledge request.

0-1-2-2019-04-11

0.1.2 - 2019-04-11

changed-10

Changed

  • MIX_ENV for publishing releases to Hex.

0-1-1-2019-04-11

0.1.1 - 2019-04-11

added-6

Added

  • This CHANGELOG file to hopefully serve as an evolving example of a standardized open source project CHANGELOG.

changed-11

Changed

  • Fixed CircleCI build for publishing docs to Hex.

0-1-0-2019-04-10

0.1.0 - 2019-04-10

added-7

Added

  • BroadwayCloudPubSub.Producer - A GenStage producer that continuously receives messages from a Pub/Sub subscription acknowledges them after being successfully processed.
  • BroadwayCloudPubSub.RestClient - A generic behaviour to implement Pub/Sub clients using the REST API.
  • BroadwayCloudPubSub.GoogleApiClient - Default REST client used by BroadwayCloudPubSub.Producer.
  • BroadwayCloudPubSub.Token - A generic behaviour to implement token authentication for Pub/Sub clients.
  • BroadwayCloudPubSub.GothToken - Default token provider used by BroadwayCloudPubSub.Producer.