The repo is versioned based on SemVer 2.0 using the tiny-but-mighty MinVer from @adamralph. See here for more information on how it works.
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
The Unreleased
section name is replaced by the expected version of next release. A stable version's log contains all changes between that version and the previous stable version (can duplicate the prereleases logs).
proIndexer
: Template demonstrating a reactor app that maintais a summarised form of an Aggregate's asRollingState
in a separatedViews
Container #132
- Target
Equinox
v4.0.0-rc.14.5
,Propulsion
v3.0.0-rc.9.11
,FsCodec
v3.0.0-rc.14.1
#131 - Target
Argu
v6.0.14
#135
proCosmosReactor
: Extended/split to becomeproIndexer
#132
6.3.1 - 2023-06-12
6.3.0 - 2023-06-08
- Target
Equinox
v4.0.0-rc.10
,Propulsion
v3.0.0-rc.5
#128 module Config
->module Store
/module Factory
#128
6.2.0 - 2023-01-23
proHotel
: Process Manager based Reactor with Unit and Integration tests wired for MemoryStore, DynamoStore and MessageDb #127
- Target
Propulsion
v3.0.0-rc.2
#129
6.1.0 - 2022-12-23
proDynamoStoreCdk
: AWS CDK wiring forPropulsion.DynamoStore.Indexer
andNotifier
#125
proIndexer
: Generalized intoproDynamoStoreCdk
#125
6.0.0 - 2022-09-16
eqxShipping
:DynamoStore
andEventStoreDb
support and Reactor Integration test #121eqxShipping
: UsePropulsion.MemoryStore
'sAwaitCompletion
#121eqxShipping
: UsePropulsion.DynamoStore
+EventStoreDb
'sAwaitCompletion
#121proProjector
,proReactor
: Add, standardizecosmos
,dynamo
,esdb
,sss
#122eqxwebcs
: Removed lots of boilerplate/wiring (by usingDeciderCore
) #122eqxweb
: Adddynamo
#122
- Target
Equinox
v4.0.0-rc.1
,Propulsion
v3.0.0-beta.4
,FsCodec
v3.0.0-rc.7.1
,net6.0
#122 - All EventStoreDB templates (except
proSync
) now use the*.EventStoreDb
edition (which usesgrpc
) #122
eqxProjector --source cosmos --kafka --synthesizeSequence
: Removed custom mode #122proReactor
: remove--filter
(seeproSync
) and--changeFeedOnly
(seeproReactorCosmos
) #122
5.3.0 - 2022-07-19
eqxShipping
: Cosmos Reactor Integration test #116proIndexer
: Propulsion.DynamoStore.Lambda AWS CDK wiring #120
- Target
Equinox
v3.0.7
- Align with v4 Transact APIs #117
5.2.1 - 2022-03-11
- Demonstrate
TransactWith
implementation 'pattern' #113
- Target
Propulsion
v2.12.2
,Equinox
v3.0.6
#111 #114 eqxPatterns
: ExtractExactlyOnceIngester
#110- Target
FsCodec.SystemTextJson
.* v2.3.2
#112
5.2.0 - 2021-12-20
- Use
module Config
pattern #104 proReactorCosmos
: AddReactorMetrics
#106feedSource
,feedConsumer
: Add metrics wiring #109MemoryStoreProjector
: Add logging of UTF-8 encoded JSON bodies in #105
- Remove usage of
type Command
DUs #103 - Target
Equinox
v3.0.5
,Propulsion
v2.12.0-rc.2
- Target
Destructurama.FSharp
v1.2.0
,Serilog.Sinks.Async
v1.5.0
,Serilog.Sinks.Console
v4.0.0
#101
5.1.0 - 2021-10-19
proCosmosReactor
: Template for simplified, same-container Cosmos-based reactions #93 🙏 @ragiano215periodicIngester
: Template illustrating usage ofPropulsion.Feed.PeriodicSource
#96
- Added defaulting of 1 min for lag reporting frequency to all Cosmos consumers #95
eqxPatterns
: replace best effort deduplication pattern with exactly-once ingestion #94- Target
Propulsion
v2.11.0
,Equinox
v3.0.4
#101 - Target
Destructurama.FSharp
v1.2.0
,Serilog.Sinks.Async
v1.5.0
,Serilog.Sinks.Console
v4.0.0
#101
- Fix CI to stop emitting builds with incorrect
AssemblyVersion 1.0.0.0
(updated MinVer to2.5.0
) - Update global.json to use SDK version
5.0.200
5.0.0 - 2021-06-22
- Target
Propulsion
v2.11.0-rc2
,Equinox
v3.0.1
#91 - Target
Destructurama.FSharp
v1.1.1-dev-00035
4.12.0 - 2021-06-02
eqxPatterns
:Period
: Skeleton Deciders+Tests forPeriod
with Rolling Balance #89eqxPatterns
:Series
+Epoch
: Skeleton Deciders+Tests for deduplicated ingestion of items #89eqxProjector --source cosmos --kafka --synthesizeSequence
: Sample code for custom parsing of document changes #84feedApi
: Template for a Web API serving a feed that can be tracked by afeedConsumer
#88feedConsumer
: Template for Feed Consumer tracking afeedApi
#88proArchiver
: Parameterize max Sync batch size limit, default to 512KiBproAchiver
,proPruner
,eqxWeb
,eqxWebCs
: Addedprometheus-net
integration
- Clean up configuration management #87
proAchiver
,proPruner
: TargetEquinox
v3.0.0
,Propulsion
v2.10.0
- Target
Propulsion
v2.10.0
,Equinox
v2.6.0
/3.0.0
4.11.0 - 2020-11-04
proArchiver
: CosmosDB ChangeFeedProcessor that syncs events from specified Hot Container's categories into a Warm Container #79proPruner
: CosmosDB ChangeFeedProcessor that prunes events from a Hot Container based on Expiration status determined by inspecting the Warm version of the Events synced by theproArchiver
#79
- Cleaned and moved
Logging
logic out toInfrastructure.fs
#76 🙏 @enricosada - Polished
SemaphoreSlim
extensions - Target
Propulsion
v2.9.0
,Equinox
v2.3.0
4.10.0 - 2020-07-27
eqxShipping
: Unit and integration tests #70
- Target
Propulsion
v2.8.0
,FsKafka
v1.5.0
#78
4.9.0 - 2020-06-10
- Update to Equinox.* v
2.1.0
, Propulsion.* v2.7.0
4.8.0 - 2020-06-05
proProjector
: Add EventStore source #73
- Cleanup
eqxShipping
#71
4.7.2 - 2020-05-20
- Target
Propulsion
v2.6.0
,FsKafka
v1.4.3
4.7.1 - 2020-05-16
- Target
Propulsion
v2.5.2
,FsKafka
v1.5.0-beta.1
proReactor
,proSync
: Fixed Default ES TCP port to 1113 #69 🙏 @svairagade
4.6.0 - 2020-04-27
tests/Equinox.Templates.Tests
: allow repo to validate integrity of templates within #67 #2proReactor
: Add arguments to facilitate projecting from a different database than that used to transact #62 🙏 @svairagadeeqxShipping
: AddReserved
event/phase toeqxShipping
#63- Added exception logging (as forced by abstract methods in
Stats
types) #66
- Target
Propulsion
v2.4.3
,FsKafka
v1.4.1
#64 #66 proReactor
,proSync
: Clean upCosmosContext
andCheckpoints
management #58
4.5.0 - 2020-04-10
- DRY'd handling of
MissingArg
inConfiguration.initialize
4.4.2 - 2020-04-04
- Added missing catch for
MissingArg
exceptions in allmain
s #61 🙏 @wantastic
4.4.1 - 2020-04-01
- Clarified role of
VerboseConsole
argument for templates involving ChangeFeedVerbose (by renaming toCfpVerbose
)
4.4.0 - 2020-03-27
proReactor
: Added--kafka --blank
mode illustrating a simple publisher #59
proReactor
: Flip default to omitting filtering logic (--noFilter
is now--filter
, defaulting to omitting the logic)
proReactor
: Fixed CFP logging omissionproReactor
: Wired producer stats emission for--kafka
modes
4.3.0 - 2020-03-12
Stats
andOutcome
management cleanup #57
4.2.0 - 2020-03-09
4.1.1 - 2020-03-06
- Trap
ArguException
for invalid Argu options 🙏 @fnipo
MaxInflightMb
of10 MiB
instead of measuring in GiB and defaulting to .5MaxConcurrentStreams
of8
for ingesters that write to stores (was MaxDop 1024)
-proReactor
- fixed runtime issue due to aliasing of cosmos
parameter; simplified @fnipo #52
4.1.0 - 2020-03-03
- Applied
UseSerilogRequestLogging
ineqxweb
[cs]
proReactor
mode for--source kafkaEventSpans
- Renamed
proReactor
's--noEventStore
to--source changeFeedOnly
proReactor
's--raw
mode
4.0.1 - 2020-02-28
- Fix
eqxweb
[cs]
by addingAddNewtonsoftJson
in order to handle Records emitted in views
4.0.0 - 2020-02-25
- Target SDK v
3.1.101
- Target
netcoreapp3.1
#9 #48 - Merge
proSummaryProjector
,proAllProjector
to formproReactor
#49 - Add
--noFilter
,--raw
switches toproReactor
#49
3.12.0 - 2020-02-23
3.11.0 - 2020-02-19
- Add handling for
-T
TCP/IP switch on EventStore args #46
- Target
Propulsion
,Equinox
,FsCodec
.* v2.0.0
3.10.0 - 2020-02-08
- Add
proAllProjector
#45
- Target
Propulsion
.* v2.0.0-rc3
proProjector
: extractHandler.fs
- Fix compiler errors in
eqxwebcs
re #44 - Removed impossible cases in
Examples.fs
3.9.0 - 2020-01-31
- Apply encapsulation techniques from https://github.com/jet/FsCodec#decoding-events in consumers #43
- Target
Equinox
.* v2.0.0-rc9
,Propulsion
.* v2.0.0-rc1
,FsCodec
.* v2.0.0-rc3
- Standardize Aggregate layouts
3.8.0 - 2019-12-07
- Target Propulsion 1.5.0, FsKafka 1.3.0
- Use uppercase for switch arguments in commandline parsing
- Included stacktrace in Exception-exit logging
3.7.0 - 2019-11-14
- Target Propulsion 1.4.0, Equinox 2.0.0-rc8, FsCodec 1.2.1
3.6.1 - 2019-11-13
- Split out Settings initialization #34
summaryConsumer
: Target FsCodec 1.1.0 to simplifyup
function #32trackingConsumer
: switch serializer to FsCodec #35- use
-g
for ES and CosmosConsumerGroupName
values #37 summaryProjector
: UseAllowStale
for CheckpointSeries as should only typically run single instance- Removed anonymous records usage to support usage with v
2.1.504
SDK
3.6.0 - 2019-10-17
- Target Propulsion 1.3.0, Equinox 2.0.0-rc7, FsCodec 1.0.0
3.5.0 - 2019-10-11
- EventStore source support for
summaryProjector
#31
- Target Propulsion 1.2.1 (minor change to accommodate signature change in .EventStore checkpoints)
- Lots of consistency + layout work resulting from porting work
3.4.1 - 2019-10-05
- Naming consistency and generalizations extracted from porting work.
3.4.0 - 2019-09-18
trackingConsumer
template providing a baseline for projecting accumulating updates across autonomous bounded contexts: #30 @luo4neck
- Significant reformatting and consistency updates in preparation for adding ES support for
summaryProjector
in #31
3.3.2 - 2019-09-15
- Target Propulsion 1.2.0 (minor breaking change in source due to parameter reordering)
3.3.1 - 2019-09-08
- Target FsCodec 1.0.0-rc2, Equinox 2.0.0-rc6, Propulsion 1.0.2-alpha.0.1
3.3.0 - 2019-09-03
summaryProjector
,summaryConsumer
templates providing a baseline for projecting summaries between autonomous bounded contexts: #29 @fnipo
3.2.0 - 2019-08-31
- Target
Propulsion
.*1.0.1
,Equinox
.*2.0.0-rc4
(handling name changes, esp wrt Collection->Container terminology) #28 - Target
Propulsion
.*1.1.0
,Equinox
.*2.0.0-rc5
,FsCodec
.*1.0.0-rc1
, simplifying Codec logic
- Removed various over-complex elements of samples
3.1.0 - 2019-07-05
propulsion-sync
: Support emission of select events direct to Kafka #26
- Target
Propulsion
.*1.0.1-rc8
EQUINOX_KAFKA_
* ->PROPULSION_KAFKA_
*
- Removed reliance on
IEnumerable<IEvent>
inRenderedSpan
andStreamSpan
3.0.3 - 2019-07-02
- Add
Publisher.fs
sample toproConsumer
- Simplify
proConsumer
Examples.fs
- Target
Equinox
.*2.0.0-rc2
,Propulsion
.*1.0.1-rc5
3.0.2 - 2019-06-19
-
proSync
has EventStore Sink support viacosmos
...es
commandline option #23 -
proSync
has EventStore Source support viaes
...cosmos
commandline option #16 -
proConsumer
offers aStreamSpan
-based API for ordered, de-deduplicated consumption without concurrent executions at stream level #24 -
proConsumer
summarizes processing outcomes in its examples using new support for same inPropulsion.Kafka
#25 -
proConsumer -n
's offers a parallel mode that runs all projections in parallel without constraints (or need to synthesize streams) #24
eqxsync
renamed toproSync
eqxProjector
split toproProjector
andproConsumer
eqxtestbed
,eqxweb
,eqxwebcs
now targetEquinox 2.0.0-rc1
proConsumer
,proProjector -k
now targetJet.ConfluentKafka.FSharp
+Propulsion.Kafka
v1.0.1-rc3
#24proSync
now targetsPropulsion.Cosmos
,Propulsion.EventStore
v1.0.1-rc3
#24
2.2.2 - 2019-05-17
dotnet new eqxprojector
uses separated read/write/progress pipeline #22
dotnet new eqxprojector -k
now targetsJet.ConfluentKafka.FSharp 1.0.0-rc7
(which targetsConfluent.Kafka 1.0.0
,librdkafka 1.0.0
)dotnet new eqxsync
uses separated read/write/progress pipeline #21- targets
Equinox 2.0.0-preview8
dotnet new eqxprojector
correctly handles progress writing #22
2.1.2 - 2019-04-15
dotnet new eqxsync
has separated processing for progress computation, progress writing and batch loading (this also happens to be the only way in which to balance throughput with correctness in the context of a ChangeFeedProcessor) #19dotnet new eqxsync
separates out notion of theCosmosIngester
andProgressBatcher
and their respective tests #20
dotnet new eqxetl
is nowdotnet new eqxsync
dotnet new eqxsync
now supports command-line category white/blacklist #18dotnet new eqxsync
now supports command-line selection of anaux
collection in either thesource
or destination collections #18- targets
Equinox
.* v2.0.0-preview5
dotnet new eqxprojector
now targetsJet.ConfluentKafka.FSharp 1.0.0-rc3
(which targetsConfluent.Kafka 1.0.0-RC4
,librdkafka 1.0.0
)
2.0.0 - 2019-03-26
dotnet new eqxprojector
template, providing a CosmosDbChangeFeedProcessor
host app, with or without a Kafka Producer and Kafka Consumer host app using theJet.ConfluentKafka.FSharp
wrapper forConfluent.Kafka
v1.0.0-beta3
#11dotnet new eqxtestbed
template, providing a host that allows running back-to-back benchmarks when prototyping models, using different stores and/or store configuration parameters #14dotnet new eqxetl
template, providing a CosmosDbChangeFeedProcessor
that ingests/transforms/filters documents from a source store, feeding events (consistently) into anEquinox.Cosmos
store #17
dotnet new eqxweb
now uses Anonymous Records syntax HT @ameier38dotnet new eqxprojector
now usesJet.ConfluentKafka.FSharp 1.0.0-preview2
(which usesConfluent.Kafka 1.0.0-RC1
)
1.2.0 - 2019-02-06
dotnet new eqxweb
now uses FSharp.UMX to make Id types more succinct #12- Target Equinox 1.0.4-rc1, which entails minor source changes to both C# and F# #12
- Fix project type guids to render C# projects (was showing F# logo) @aarondandy #8
1.1.1 - 2019-01-17
-
C# port of template -
dotnet new eqxwebcs
, prompting cleanup work in jet/equinox#81 #5Thanks to @aarondandy for early legwork
Thanks to @mcintyre321 for excellent direct and indirect suggestions regarding how to tidy the Domain implementations
- F# template has been renamed to: eqxweb (was
equinoxweb
)
(For information pertaining to earlier releases, see release notes in https://github.com/jet/dotnet-templates/releases and/or can someone please add it!)