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).
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
integrationproAchiver
,proPruner
: TargetEquinox
v3.0.0
,Propulsion
v2.10.0
- Clean up configuration management #87
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!)