Skip to content

Releases: dogmatiq/dogma

Version 0.15.0

03 Oct 02:17
v0.15.0
20d84e8
Compare
Choose a tag to compare
Version 0.15.0 Pre-release
Pre-release

Removed

  • [BC] Removed Message.Validate().

Changed

  • Bumped minimum Go version to v1.23.
  • [BC] The Validate() methods on the Command, Event and Timeout interfaces now require a CommandValidationScope, EventValidationScope or TimeoutValidationScope argument, respectively.

Added

  • Added CommandValidationScope, EventValidationScope and TimeoutValidationScope interfaces. These interfaces are currently empty, but methods will be added in the future without causing application-facing compatibility issues.

Deprecated

  • The Message interface is no longer deprecated as it sees widespread use within engine implementations. Applications should continue to use the more-specific Command, Event and Timeout interfaces wherever possible, which no longer share compatible method sets.

Version 0.14.3

26 Sep 22:50
v0.14.3
963a2a3
Compare
Choose a tag to compare
Version 0.14.3 Pre-release
Pre-release

Removed

  • [ENGINE BC] Removed deprecated fixtures package.

Version 0.14.2

21 Aug 00:16
v0.14.2
6815a52
Compare
Choose a tag to compare
Version 0.14.2 Pre-release
Pre-release

Removed

  • [ENGINE BC] Removed generic fixtures.TestCommand, TestEvent, TestTimeout and related TypeA through TypeZ types.

Version 0.14.1

17 Aug 22:16
v0.14.1
b56c54d
Compare
Choose a tag to compare
Version 0.14.1 Pre-release
Pre-release

Deprecated

  • The fixtures sub-package, which is used internally to test Dogma engine and toolkit implementations, is now deprecated. It will be removed in a future release.

Version 0.14.0

17 Aug 02:13
v0.14.0
2ab5ae8
Compare
Choose a tag to compare
Version 0.14.0 Pre-release
Pre-release

Changed

  • [BC] The Command, Event and Timeout interfaces are no longer aliases for Command, they are distinct types. At this stage these interfaces are method-compatible with the Message interface, however they will diverge in a future release.

Removed

This release removes the "timeout hint" functionality (see [ADR-0021]). Application implementers are free to apply their own context deadlines when handling messages.

  • [BC] Removed ProcessMessageHandler.TimeoutHint()
  • [BC] Removed IntegrationMessageHandler.TimeoutHint()
  • [BC] Removed ProjectionMessageHandler.TimeoutHint()
  • [BC] Removed NoTimeoutHintBehavior

Deprecated

  • Marked the Message interface as deprecated. It may be removed in a future release.

Version 0.13.1

16 Jul 02:23
v0.13.1
e722110
Compare
Choose a tag to compare
Version 0.13.1 Pre-release
Pre-release

Added

  • [ENGINE BC] Added Disable() method to handler configurer interfaces.
  • Added placeholder DisableOption type for forward-compatibility.

Version 0.13.0

25 Mar 23:01
v0.13.0
2817fb6
Compare
Choose a tag to compare
Version 0.13.0 Pre-release
Pre-release

Added

  • [ENGINE BC] Added placeholder option parameters to the following methods and functions:
    • ApplicationConfigurer.RegisterAggregate()
    • ApplicationConfigurer.RegisterProcess()
    • ApplicationConfigurer.RegisterIntegration()
    • ApplicationConfigurer.RegisterProjection()
    • CommandExecutor.ExecuteCommand()
    • HandlesCommand()
    • ExecutesCommand()
    • HandlesEvent()
    • RecordsEvent()
    • SchedulesTimeout()

Removed

This release marks 9 months since the release of [0.12.0], which deprecated several elements of the API. Those elements have been removed in this release.

  • [BC] Remove deprecated message routing methods (use .Route() instead)
    • AggregateConfigurer.ConsumesCommandType()
    • AggregateConfigurer.ProducesEventType()
    • ProcessConfigurer.ConsumesEventType()
    • ProcessConfigurer.ProducesCommandType()
    • ProcessConfigurer.SchedulesTimeoutType()
    • IntegrationConfigurer.ConsumesCommandType()
    • IntegrationConfigurer.ProducesEventType()
    • ProjectionConfigurer.ConsumesEventType()
  • [BC] Removed DescribableMessage interface and DescribeMessage()
  • [BC] Removed ValidateableMessage interface and ValidateMessage()
  • [BC] Removed EventRecorder interface

Version 0.12.1

13 Jun 22:56
v0.12.1
2f16c4e
Compare
Choose a tag to compare
Version 0.12.1 Pre-release
Pre-release

Changed

  • [APP BC] Application and handler identity names are now constrained to a maximum of 255 bytes in length. This is a change to the specification/documentation only.

Version 0.12.0

09 Apr 02:00
v0.12.0
fa0bbed
Compare
Choose a tag to compare
Version 0.12.0 Pre-release
Pre-release

This release aligns the Dogma API with several best practices that have emerged since the last release.

Although this release includes a large number of changes there should be no breaking changes to applications that are already following these best practices.

  • Use RFC 4122 UUIDs for identity keys
  • Implement MessageDescription() on message types
  • Implement Validate() methods on message types

Otherwise, most significant change is the introduction of Routes() methods to handler configurer interfaces. Implementors should use Routes() in preference to the existing Consumes*Type() and Produces*Type() methods, which are now deprecated.

The Routes() API accepts arguments that use type parameters to communicate message types. It also offers more extensible interface that allows future support for per-message routing configuration without further breaking changes.

Added

  • [APP BC] Added MessageDescription() method to Message interface
  • [APP BC] Added Validate() method to Message interface
  • Added Command, Event and Timeout as aliases for Message in preparation for stricter static message typing

Routing API

  • [ENGINE BC] Added Routes() methods to handler configurer interfaces
  • Added HandlesCommand()
  • Added RecordsEvent()
  • Added HandlesEvent()
  • Added ExecutesCommand()
  • Added SchedulesTimeout()
  • Added Route interface
  • Added AggregateRoute interface
  • Added ProcessRoute interface
  • Added IntegrationRoute interface
  • Added ProjectionRoute interface

Projection delivery policies

  • Added ProjectionConfigurer.DeliveryPolicy()
  • Added ProjectionScope.IsPrimaryDelivery()
  • Added ProjectionDeliveryPolicy
  • Added UnicastProjectionDeliveryPolicy
  • Added BroadcastProjectionDeliveryPolicy

Changed

  • [APP BC] Handler and application identity keys must now be an RFC 4122 UUID string

Deprecated

The new Routes() API supersedes the following methods:

  • Deprecated ConsumesCommandType() methods, use Routes() with HandlesCommand[T]() instead
  • Deprecated ProducesCommandType() methods, use Routes() with ExecutesCommand[T]() instead
  • Deprecated ConsumesEventType() methods, use Routes() with HandlesEvent[T]() instead
  • Deprecated ProducesEventType() methods, use Routes() with RecordsEvent[T]() instead
  • Deprecated SchedulesTimeoutType() methods, use Routes() with SchedulesTimeout[T]() instead

Because Message now has MessageDescription() and Validate() methods, the following elements are no longer necessary:

  • Deprecated DescribableMessage
  • Deprecated DescribeMessage()
  • Deprecated ValidatableMessage
  • Deprecated ValidateMessage()

No engines except testkit are able to provide a meaningful implementation of EventRecorder without fundamental changes to the definition of an application.

  • Deprecated EventRecorder, use an IntegrationMessageHandler instead

Version 0.11.1

01 Mar 04:04
Compare
Choose a tag to compare
Version 0.11.1 Pre-release
Pre-release

Fixed

  • Fix signature of NoTimeoutMessagesBehavior.HandleTimeout() to match ProcessMessageHandler interface