Releases: dogmatiq/dogma
Version 0.15.0
Removed
- [BC] Removed
Message.Validate()
.
Changed
- Bumped minimum Go version to v1.23.
- [BC] The
Validate()
methods on theCommand
,Event
andTimeout
interfaces now require aCommandValidationScope
,EventValidationScope
orTimeoutValidationScope
argument, respectively.
Added
- Added
CommandValidationScope
,EventValidationScope
andTimeoutValidationScope
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-specificCommand
,Event
andTimeout
interfaces wherever possible, which no longer share compatible method sets.
Version 0.14.3
Version 0.14.2
Removed
- [ENGINE BC] Removed generic
fixtures.TestCommand
,TestEvent
,TestTimeout
and relatedTypeA
throughTypeZ
types.
Version 0.14.1
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
Changed
- [BC] The
Command
,Event
andTimeout
interfaces are no longer aliases forCommand
, they are distinct types. At this stage these interfaces are method-compatible with theMessage
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
Added
- [ENGINE BC] Added
Disable()
method to handler configurer interfaces. - Added placeholder
DisableOption
type for forward-compatibility.
Version 0.13.0
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 andDescribeMessage()
- [BC] Removed
ValidateableMessage
interface andValidateMessage()
- [BC] Removed
EventRecorder
interface
Version 0.12.1
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
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 toMessage
interface - [APP BC] Added
Validate()
method toMessage
interface - Added
Command
,Event
andTimeout
as aliases forMessage
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, useRoutes()
withHandlesCommand[T]()
instead - Deprecated
ProducesCommandType()
methods, useRoutes()
withExecutesCommand[T]()
instead - Deprecated
ConsumesEventType()
methods, useRoutes()
withHandlesEvent[T]()
instead - Deprecated
ProducesEventType()
methods, useRoutes()
withRecordsEvent[T]()
instead - Deprecated
SchedulesTimeoutType()
methods, useRoutes()
withSchedulesTimeout[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 anIntegrationMessageHandler
instead
Version 0.11.1
Fixed
- Fix signature of
NoTimeoutMessagesBehavior.HandleTimeout()
to matchProcessMessageHandler
interface