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.
Please note FsKafka has (generally additive) breaking changes even in Minor and Patch releases as:
- FsKafka binds strongly to a specific version of
Confluent.Kafka
+librdkafka.redist
,so arbitrary replacements are already frowned on - a primary goal is to be terse and not vary from the underlying defaults where possible - putting in lots of Obsoleted overloads as one normally should is contrary to this goal
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).
1.9.2 - 2022-08-10
1.9.0 - 2022-06-18
- Target
Confluent.Kafka [1.9.0]
,librdkafka.redist [1.9.0]
#91 - Update global.json to use SDK version
6.0.300
, useDotNet.ReproducibleBuilds
#90 #93
- Fix CI to stop emitting builds with incorrect
AssemblyVersion 1.0.0.0
(updated MinVer to2.5.0
) #90 - Remove extraneous variation from
AwaitTaskCorrect
by switching to canonical implementation #92
1.7.0 - 2021-09-20
- Target
Confluent.Kafka [1.7.0]
,librdkafka.redist [1.7.0]
#89
- Remove FsKafka0, the older, less loved shimmed version which now be subject to the scream test with #87
- Remove targeting for
net461
- support onlynetstandard 2.0
with #88 - Remove
AwaitThreshold
inInFlightMessageCounter
#89
1.6.3 - 2021-06-23
- Added overload of
BatchedProducer
to support message headers #86 🙏 @deviousasti - Added overload of
BatchedProducer
to support passing inMessage[]
#86 🙏 @deviousasti
- xmldocs for
BatchedProducer
#86 🙏 @deviousasti
1.6.2 - 2021-02-26
- Added overload of
InFlightMessageCounter.AwaitThreshold
withbusyWork
argument #73 BatchedConsumer
: AddedAwaitWithStopOnCancellation
#83ProducerConfig
: AddmaxMessageBytes
parameter to constructor #84
- Target
Confluent.Kafka [1.6.2]
,librdkafka.redist [1.6.1]
#85 BatchedConsumer
: RenamedAwaitCompletion
toAwaitShutdown
#83
- Removed deprecated overload of
KafkaProducerConfig.Create
introduced in 1.5.0 #73 - Removed deprecated overload of
InFlightMessageCounter.AwaitThreshold
introduced in 1.5.1 #73
1.5.6 - 2020-12-11
1.5.5 - 2020-10-21
1.5.4 - 2020-09-11
- Resolved Memory leak introduced in 1.5.3 #79 🙏 @wantastic84
1.5.3 - 2020-09-08
- Logging of consume-loop terminating exceptions caught in the batch processing loop and/or handler #78 🙏 @wantastic84
1.5.2 - 2020-08-19
- BREAKING: Renamed
FsKafka.KafkaMonitor.StartAsChild
toStart
, changed return type toIDisposable
#77 🙏 @wantastic84
- Provided mechanism to tear down the monitoring loop when the consumer stops #77 🙏 @wantastic84
1.5.1 - 2020-08-04
- BREAKING:
KafkaConsumerConfig.Create
: addedallowAutoCreateTopics
argument to enable control ofallow.auto.create.topics
now thatlibrdkafka 1.5
changes the default #71
- Changed unit of
maxInFlightBytes
when rendered in logs from GiB to MiB #72
- Applied
Pause
/Resume
when consumer quiesces due tomaxInFlightBytes
to avoidMAXPOLL
condition (not implemented forFsKafka0
) #70
1.5.0 - 2020-07-22
1.4.5 - 2020-07-22
- BREAKING: Encapsulated linger/batching semantics in a
Batching
DU passed toKafkaProducerConfig.Create
(instead oflinger
andmaxInFlight
) in lieu of havingBatchedProducer.CreateWithConfigOverrides
patch the values #68
- BREAKING: Handle deadlock between
maxInFlightMessageBytes
wait loop and Consumer cancellation #61 🙏 @bilaldurrani FsKafka0
: AlignedThread.Sleep
when overmaxInFlightBytes
threshold withFsKafka
(reduced from5
to1
ms) #67
1.4.4 - 2020-06-29
- Add
.Verbose
log for handler invocations #57 🙏 @wantastic84 - include
partition
property asLogContext.PushProperty
when dispatching a handler invocation #60 FsKafka0
: Add ConsumerError logging #57 🙏 @svairagade
FsKafka
: Distinguish Fatal Errors from by non-fatal by reducing level to Warning #57 🙏 @svairagade- Target
Confluent.Kafka [1.4.4]
,librdkafka.redist [1.4.4]
- Remove incorrect Producer logging (it logs before the wait hence generally reports 0), as spotted by @wantastic84 #57
FsKafka0
: removeObjectDisposedException
when doing > 1 of.Stop
or.Dispose
on a Consumer #60FsKafka0
: remove leak due to incorrect tail-recursion (do!
->return!
) (Clone ofFsKafka
#39) #59
1.4.4-rc3 - 2020-06-25
- include
partition
property asLogContext.PushProperty
when dispatching a handler invocation #60
- Target
Confluent.Kafka [1.4.4-RC1]
,librdkafka.redist [1.4.4]
- Elevated
.Verbose
log for handler invocations from #57 to.Debug
#60
FsKafka0
: removeObjectDisposedException
when doing > 1 of.Stop
or.Dispose
on a Consumer #60
1.4.4-rc2 - 2020-06-11
1.4.4-rc1 - 2020-06-10
- Add
.Verbose
log for handler invocations #57 🙏 @wantastic84 - FsKafka0: Add ConsumerError logging #57 🙏 @svairagade
- FsKafka: Distinguish Fatal Errors from by non-fatal by reducing level to Warning #57 🙏 @svairagade
- Remove incorrect Producer logging (it logs before the wait hence generally reports 0), as spotted by @wantastic84 #57
1.4.3 - 2020-05-20
FsKafka0
: AddIConsumer
,ConsumeResult
,DeliveryReport
,DeliveryResult
aliases #55- Add
Binding.offsetValue
#56
- Target
Confluent.Kafka [1.4.3]
,librdkafka.redist [1.4.2]
FsKafka0
: RenameConfluent.Kafka.Config
toConfigHelpers
to avoid conflict #54FsKafka0
: RenameConfluent.Kafka.Types.*
toConfluent.Kafka.*
for symmetry #54
FsKafka0
: ReplaceAutoOffsetReset.None
withAutoOffsetReset.Error
#54
1.4.2 - 2020-05-13
FsKafka0
: (Moved from Propulsion.Kafka0) - Implementation of same API as FsKafka based onConfluent.Kafka
v0.11.3
#51KafkaMonitor
based on Burrow (Moved from Propulsion.Kafka jet/Propulsion #12 #51 🙏 @jgardellaKafkaProducerConfig.Create
:requestTimeoutMs
#52
- Target
Confluent.Kafka
/librdkafka.redist
v[1.4.2]
#53 KafkaConsumerConfig.Create
: MadeautoOffsetReset
argument mandatory #52
Config.validateBrokerUri
#51
1.4.1 - 2020-04-18
- Added optional
headers
param:KafkaProducer.ProduceAsync(key, value, ?headers)
#50 - Exposed lower level
KafkaProducer.ProduceAsync(Message<string,string>)
#50
1.4.0 - 2020-04-06
- BREAKING: Replace
broker : Uri
withbootstrapServers : string
(use(Config.validateBrokerUri broker)
for backcompat if required) #49 - Target
Microsoft.NETFramework.ReferenceAssemblies
v1.0.0
,Minver
v2.2.0
- Updated to
Confluent.Kafka
,librdkafka.redist
v1.4.0
- Updated to SDK
3.1.101
, VM imagemacOS-latest
1.3.0 - 2019-12-04
- Renamed to
FsKafka
- Updated to
MinVer
v2.0.0
,Microsoft.SourceLink.GitHub
v1.0.0
- Updated to
Confluent.Kafka
,librdkafka.redist
v1.3.0
1.2.0 - 2019-09-21
NOTE: not interoperable (i.e., via a binding redirect) with CK 1.1 due to a breaking change in the CK 1.2 release, see #44.
config
argument toKafaConsumerConfig
andKafkaProducerConfig
constructors accepting anIDictionary<string,string>
to match Confluent.Kafka 1.2 ctor overloads #44
offsetCommitInterval
renamed toautoCommitInterval
to match name used in CK >= 1.0 #45- Uses
MinVer
v2.0.0-alpha.2
internally - Targets
Confluent.Kafka
v1.2.0
,librdkafka.redist
v1.2.0
#44
1.1.0 - 2019-06-28
- Targets
Confluent.Kafka
v1.1.0
,librdkafka.redist
v1.1.0
#42 - Added
Producing...
prefix to log messages for consistency - Made
Consuming...
prefixes for log messages consistent - Tidied logging of
Unset
values inConsuming... Committed
messsage ConsumerBuilder.WithLogging
signature change (NB breaking vs1.0.1
, affects users of Propulsion libraries only)
- Fixed and clarified defaulting behavior for
fetchMaxBytes
,maxInFlight
,partitioner
arguments #40
1.0.1 - 2019-06-10
Propulsion
.* - these have been moved to a dedicated repo:- https://github.com/jet/propulsion
- remove leak due to incorrect tail-recursion (
do!
->return!
) #39
1.0.1-rc1 - 2019-06-03
Propulsion.Kafka.Codec.RenderedSpan
(neeEquinox.Projection.Codec.RenderedSpan
, which is deprecated and is being removed)Propulsion.EventStore
,Propulsion.Cosmos
(productized fromEquinox.Templates
'seqxsync
andeqxprojector
)
- Targets
Confluent.Kafka
v1.0.1
,librdkafka.redist
v1.0.1
1.0.0-rc14 - 2019-06-10
- remove leak due to incorrect tail-recursion (
do!
->return!
) (Cherry pick of #39)
1.0.0-rc13 - 2019-06-01
- Split reusable components of
ParallelConsumer
out into independentPropulsion
andPropulsion.Kafka
libraries #34
1.0.0-rc12 - 2019-05-31
- Included
totalLag
in Consumer Stats
- Default
minInFlightBytes
is now 2/3 ofmaxInFlightBytes
- Reduced
Thread.Sleep
when overmaxInFlightBytes
threshold from5
to1
ms
- Significant tuning / throughput improvements for
ParallelConsumer
1.0.0-rc11 - 2019-05-27
ParallelConsumer
#33
- reinstated
AutoOffsetReset
logging inKafkaConsumerConfig
1.0.0-rc10 - 2019-05-22
- split batching behaviors out into
BatchedProducer
/BatchedConsumer
#30 - default auto-commit interval dropped from 10s to 5s (which is the
Confluent.Kafka
default) #30 - removed curried
member
Method arguments inStart
methods
1.0.0-rc9 - 2019-05-22
- each configuration DSL now has a
customize
function to admit post-processing after defaults andcustom
have taken effect #29 - Producer/Consumer both have an
Inner
to enable custom logic #29
- default auto-commit interval dropped from 10s to 5s (which is the
Confluent.Kafka
default) #29 - default
fetchMinBytes
dropped from 10 to 1 (which is theConfluent.Kafka
default) #29
1.0.0-rc8 - 2019-05-21
1.0.0-rc7 - 2019-05-16
- Exposed [single-item]
ProduceAsync
inKafkaProducer
1.0.0-rc6 - 2019-04-24
- Updated to target
Confluent.Kafka 1.0.0
1.0.0-rc5 - 2019-04-24
- Updated to target
Confluent.Kafka 1.0.0-RC7
1.0.0-rc4 - 2019-04-23
- Updated to target
Confluent.Kafka 1.0.0-RC6
1.0.0-rc3 - 2019-04-12
- Updated to target
Confluent.Kafka 1.0.0-RC4
- Cleaned minor logging inconsistency wrt
CompressionType
1.0.0-rc2 - 2019-04-02
- Updated to target
Confluent.Kafka 1.0.0-RC3
#24
1.0.0-rc1 - 2019-03-27
- Updated to target
Confluent.Kafka 1.0.0-RC2
(which referenceslibrdkafka.redist 1.0.0
) #23 - Pins
rdkafka
andConfluent.Kafka
dependencies to specific known good versions as above #22
1.0.0-preview2 - 2019-03-26
- Updated to target
Confluent.Kafka 1.0.0-RC1
(triggered relatively minor changes internally due to sane API fixes, does not update to rdkafka 1.0.0, still1.0.0-RC9
) #21
1.0.0-preview1 - 2019-03-05
(Extracted from Equinox Changelog - this codebase was maintained within that repo originally)
Equinox.Projection.Kafka
consumer metrics emission, see Equinox #94 @michaelliao5- Initial release as part of
Equinox.Cosmos
projection facilities, see Equinox #87 @michaelliao5
(Stripped down repo for history purposes, see v0
branch for implementation targeting Confluent.Kafka
v 0.9.4
)