Skip to content
This repository has been archived by the owner on Dec 13, 2024. It is now read-only.

Latest commit

 

History

History
136 lines (108 loc) · 6.53 KB

CHANGELOG.md

File metadata and controls

136 lines (108 loc) · 6.53 KB

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.

Added

Changed

Removed

Fixed

5.1.1 - 2022-09-09

Fixed

  • Made google-protobuf dependency explicit

5.0.0 - 2021-02-17

Added

  • Message encoders. Messages can now be encoded using either binary protobufs (the default) or JSON protobufs.
  • RailwayIpc::OutgoingMessage abstraction that encapsulates everything about a message to be published.

Changed

  • Publisher#publish now takes an optional format parameter that specifies how the message should be encoded. It is added to the message header when the message is published. The default format is binary_protobuf.
  • (Breaking change) Publisher#publish now returns an OutgoingMessage instead of a Bunny::Exchange.
  • Refactor PublishedMessage#store_message to take an OutgoingMessage.

Removed

  • (Breaking change) Remove deprecated SingletonPublisher

4.0.1 - 2021-01-12

Fixed

  • Fixed undefined method fetch for Bunny::MessageProperties error. Bunny::MessageProperties isn't really a Hash, it wraps one (and doesn't provide a #fetch method).

4.0.0 - 2021-01-11

Added

  • JSON decoder for consumers that can handle JSON encoded Protobufs. Note that the publishers do not (yet) have the option of encoding the messages as JSON.

Changed

  • (Breaking Change) Rename Consumer#work to Consumer#work_with_params. This was necessary so that we can support specifying different message encodings via metadata in the future. If the message encoding cannot be determined from the message metadata fall back to a default decoder (binary protobufs).

Fixed

  • ./bin/console script was broken because Pry wasn't a dependency; added Pry as a development dependency only.

3.0.0 - 2020-12-07

Changed

  • Consumers will no longer crash when an exception is raised. Instead, consumers will move the message that caused the exception to a single dead-letter exchange called 'ipc:errors'. Railway will configure the dead-letter exchange automatically.

2.2.2 - 2020-11-20

Fixed

  • Fixed Publisher class channel leak. Channels were being created on each instantiation of a Publisher instead of being re-used.

2.2.1 - 2020-10-20

Added

  • Logging to indicate when options passed via listen_to/from_queue are overriding the defaults.

2.2.0 - 2020-10-20

Added

  • The ability to configure workers to handle different workloads via rake railway_ipc::consumers:spawn

2.1.0 - 2020-10-19

Added

  • :options parameter to listen_to which passes keys along to Sneaker's from_queue method.

2.0.3 - 2020-09-02

Fixed

  • Fix RPC server. RPC servers need to conform to the Sneaker worker API (i.e. their initializers need to be able to accept queue name / pool and they require a stop method.

2.0.2 - 2020-08-27

Changed

  • RPC RailwayIpc::Client does not need to log the queue name.

2.0.1 - 2020-08-24

Fixed

  • RailwayIpc::Logger now handles block syntax (i.e. logger.info { 'my message' }) correctly.

2.0.0 - 2020-08-20

Added

  • Several additions to internal logging:
    • Log messages now include a feature key. This can be used by logging aggregator tools to group log messages across different systems that use the gem. If one isn't provided a default value of railway_ipc is used.
    • Protobufs are logged as a sub-hash which contains both the protobuf type and payload.
    • Exchange and queue names are logged where applicable.
    • The internal Bunny connection now uses the RailwayIpc::Logger instead of a generic Logger.

Changed

  • Breaking Change RailwayIpc.configure now takes device, level, and formatter instead of a complete Logger instance. The instance is now managed internally by Railway. This is a breaking change to the RailwayIpc.configure API, clients will need to be updated to use the new syntax.

1.1.0 - 2020-08-07

Changed

  • allow multiple consumers to handle the same message
  • consumed messages table requires its own primary key due to ActiveRecord not having support for composite primary keys

1.0.1 - 2020-07-23

Fixed

  • Fix publisher connection by using default connection if one isn't provided

1.0.0 - 2020-07-20

Added

  • CircleCI build that runs the specs
  • Rubocop (also ran by CircleCI)
  • New error types for incoming messages
  • RailwayIpc::Messages::Unknown protobuf

Changed

  • Refactored worker to use ProcessIncomingMessage and IncomingMessage abstractions
  • Moved decoding logic from ConsumedMessage to IncomingMessage
  • Removed STATUSES constant from ConsumedMessage
  • Publisher is no longer a Singleton; kept a Singleton version of the Publisher for backwards compatibility that gives a "deprecated" warning

Removed

  • Removed BaseMessage protobuf
  • NullMessage and NullHandler were removed

Fixed

  • Fixed all Rubocop warnings and errors

0.1.7 - 2020-06-29

Added

  • Correlation ID and message UUID are auto generated for messages for IDs are not passed in #23