All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
- Bugfix in
ChainLifecycleHooks
where incorrect nil checks could result in panic go get -u
to upgrade deps
- Updated
go.uber.org/mock
version0.5.0
- Updated
golang.org/x/sync
version0.9.0
- Removed noisy log
Timed out on read
- Updated
confluent-kafka-go
version2.6.1
along with other dependencies
- Updated
confluent-kafka-go
version2.6.0
to address security vulnerability.
- Removed dependency on github.com/golang/mock (deprecated) in favor of github.com/uber-go/mock
- Bugfixes in
WithDisableCircuitBreaker
andWithDisableBusyLoopBreaker
options implementation
- Added
WithDisableCircuitBreaker
andWithDisableBusyLoopBreaker
options. These are variants of the now deprecatedDisableCircuitBreaker
andDisableBusyLoopBreaker
options. They provide a booling parameter which is more convenient for usage with code generation and for shimming with configuration.
- Update to allow subject name specification (not just TopicNameStrategy)
- Updated
avro_schema_registry
formatter deserialization to require passed in schema (less susceptible to errors from inferred target schema)
- Added support for schema registry (avro, proto, json). Extended
zfmt.FormatterType
types to includeavro_schema_registry
,proto_schema_registry
andjson_schema_registry
- Added lifecycle function
LifecyclePostReadImmediate
- Added
workFactory.CreateWithFunc
which is a convenience work factory method for creating work using a callback instead of an interface (can reduce boilerplate) in some scenarios. - During the creation of readers/writers an error is now returned if bootstrap servers is empty
- Updated golang version 1.23
- Updated otel versions
- Updated
WithDeadLetterTopic
option to borrow username and password from ConsumerTopicConfig when those issues aren't specified on DeadLetterTopicConfig
- Added dlt topic name in error logs on dlt write failure
Initial release to public github.com
- Updated otel to v1.27
- Updated semconv to v1.25
- Added consumer delay config
ProcessDelayMillis
this allows the consumption of messages, but delays processing until at least the configured delay has passed since the message was written. Useful for intermediate dead letter messages. - Added ability to add headers via writer option (WithHeaders).
- Updated so
linger.ms=0
is the default. - Updated so
socket.nagle.disable=true
is the default. - Increased
SessionTimeoutMillis
andMaxPollIntervalMillis
defaults to be greater thanProcessDelayMillis
so that an inadvertent long running processor doesn't cause a rebalance. - Updated confluent.Config's usage of
config.AdditionalProps
. They can now override any setting. Previously, some of the promoted configs couldn't be set via this map.
- Updated to be used with zworker.Work which requires a
work.Run
interface notwork.Do
. The difference beenwork.Run
is executed once, andzkafka
is responsible for continuously looping, whereaswork.Do
would be continually executed in a loop. - Renamed
zkafka.WithOnDoneWithContext
tozkafka.WithOnDone
and removed originalzkafka.WithOnDone
option (which didn't provide a context.Context arg) - Updated
Writer
interface to includeWriteRaw
method. The concrete type has supported it for some time, but was waiting for a major version roll to update the interface. - Updated
zkafka.Message
headers to be amap[string][]byte
instead ofmap[string]interface{}
. This is closer to the transport representation and is more convenient and self documenting. The interface{} type was a holdover from the original implementation and was not necessary. - Removed
ExtractHeaderKeys
(reduce surface area of package). Opinionated API (zillow specific) that now resides in zkafkacomproot - Added variadic arguments (
...zkafka.WriteOption
) tokwriter.Write*
methods . This allows future customization in a noninvasive way. - Removed
zcommon
dependency. Introduce hooks which can be used toward the same end - Changed interface{} -> any
- Added lifecycle methods
PostRead
,PreWrite
andPostFanout
- Added
WithConsumerProvider
andWithProducerProvider
which is useful for full e2e testing. - Updated work to remove read messages that won't be worked, from the inwork count. Allows Faster shutdown
- Supports migration from Datadog statsd to Panoptes.
- Removes the
Metrics
interface and related options. RemovesNoopMetrics
struct. Rather than calling metrics classes directly, the user registers lifecycle hooks and calls the metric provider from the hooks. For example, zkafkacomproot registers hooks that call the zmetric provider. - Removes the
RequestContextExtractor
interface. Instead, use thePreProcessing
lifecycle hook to extract information from the request and add it to the context. The context returned from thePreProcessing
hook is used for the rest of the request lifecycle.
- Removes the dependency on opentracing-go. Opentracing-go was a stale dependency that was no longer receiving updates. The library is now instrumented with opentelemtry a stable tracing library, that was written with backwards compatability in mind with opentracing-go.
- Removed
WithTracer(opentracing.Tracer)
. UseWithTracerProvider
andWithTextMapPropagator
instead.
Updated to account for update in zfmt which changes the values of some of the formatter factory entry values.
To see further details on zmt update to V1. See migration guide here