Releases: confluentinc/confluent-kafka-dotnet
Releases · confluentinc/confluent-kafka-dotnet
v1.0.1
v1.0.0
1.0.0 is a major update of the API, introducing many new features and enhancements.
Note: The 1.0 API is not compatible with earlier versions of the library.
Feature highlights:
- Inherits all of the new features in librdkafka v1.0.0
- General improvements to client classes:
- Strongly typed configuration.
- Construction is via builder classes:
- Allows/enforces that event handlers are specified at construction time.
- More extensible.
- Header support.
- New Message class abstraction and related changes.
- Consistency in error reporting across library (via exceptions).
- Support for fatal errors.
- Added AdminClient:
- CreateTopics, DeleteTopics, CreatePartitions, AlterConfigs, and DescribeConfigs methods.
- Moved ListGroups and GetMetadata methods from the Producer and Consumer classes to AdminClient.
- Producer specific improvements:
- New serialization interface:
- Non-blocking support for async serializers.
- Very flexible:
- e.g. can be easily extended to support header serialization.
- Capability to specify custom timestamps when producing messages.
- Message persistence status support.
- Renamed ProduceAsync variants with a callback to Produce.
- New serialization interface:
- Consumer improvements:
- A new rebalance API.
- New deserialization API analogous to the new serialization API.
- PartitionEOF notification is via ConsumeResult, not events.
- EOF notification is now disabled by default. To enable, set the EnablePartitionEof config property to true.
- Confluent Schema Registry integration
- Added support for basic authentication.
- Added GET subject versions to the cached schema registry client.
- Renamed Confluent.Kafka.Avro to Confluent.SchemaRegistry.Serdes in preparation for support for additional serialization formats.
v1.0.0-RC7
- Moved SyncOverAsync functionality to the Confluent.Kafka.SyncOverAsync namespace.
- Marked DependentProducerBuilder as API-SUBJECT-TO-CHANGE.
- No-op handlers are no longer registered with librdkafka if corresponding handlers are not specified in client builder classes.
- Renamed AsyncAvroSerializer to AvroSerializer and AsyncAvroDeserializer to AvroDeserializer
v1.0-RC6
New Features
- Added DependentAdminClientBuilder class.
Changes
- Reverted RC4 changes.
- Renamed AvroSerializer to AsyncAvroSerializer and AvroDeserializer to AsyncAvroDeserializer
- Added SyncOverAsyncSerializer and SyncOverAsyncDeserializer adapter classes.
- Added AsSyncOverAsync factory method to AsyncAvroSerializer and AsyncAvroDeserializer.
- Removed IAsyncDeserializer setter overloads from the ConsumerBuilder class.
- Renamed Producer.BeginProduce to Producer.Produce.
- Produce throws an exception if used when async serializers are configured.
- Made AdminClient, Producer, and Consumer classes internal.
v1.0-RC4
v1.0-RC3
New Features
Producer.Poll
can now be used with producer instances that are in background polling mode.- Typically use: Block for a minimal period of time following a
ErrorCode.Local_QueueFull
error.
- Typically use: Block for a minimal period of time following a
Changes
- Removed the
Confluent.Kafka.Serdes
namespace.
Fixes
- Added
CompressionType
property toProducerConfig
class.
v1.0-RC2
v1.0-RC1
New Features
- Added GET subject versions to the cached schema registry client.
- References librdkafka.redist 1.0.0-RC9
- supports apline linux out-of-the-box.
- fallback support (that excludes security features) for most linux distributions previously unsuppored out-of-the-box.
- fixed a dependency issue on MacOS
Changes
- A new rebalance API.
SetRebalanceHandler
has been split intoSetPartitionsAssignedHandler
andSetPartitionsRevokedHandler
.- Calling of
Assign
/Unassign
in these handlers is prohibited. - Partitions to read from / start offsets can be optionally specified manually via the return value from these handlers.
- The
Message.PersistenceStatus
property name has changed toMessage.Status
. - Moved the
GetWatermarkOffsets
andQueryWatermarkOffsets
methods from admin client to consumer. - Context is now provided to serdes via a
SerializationContext
class instance. - All errors (that don't correspond to application logic errors) that occur as the result of a call to the produce and consume methods are now reported via exceptions of type ProduceException and ConsumeException.
Fixes
- Corrected an error in the
rd_kafka_event_type
method signature which was causing incompatibility with mono. - Audited exception use across the library and made changes in various places where appropriate.
- Removed unused
CancellationToken
parameters (we will add them back when implemented). - Builder classes now return interfaces, not concrete classes.
- Removed the dependency on
CompilerServices.Unsafe
which was causingProduceAsync
to hang in some scenarios. - Fixed a deadlock-on-dispose issue in
AdminClient
. - Made
Producer.ProduceAsync
async. - Fixed deadlock in BeginProduce and Consume when using async serdes in a single threaded context.
v1.0-beta3
New Features
- Revamped producer and consumer serialization functionality.
- There are now two types of serializer and deserializer:
ISerializer<T>
/IAsyncSerializer<T>
andIDeserializer<T>
/IAsyncDeserializer<T>
.ISerializer<T>
/IDeserializer<T>
are appropriate for most use cases.IAsyncSerializer<T>
/IAsyncDeserializer<T>
are async friendly, but less performant (they returnTask
s).
- Changed the name of
Confluent.Kafka.Avro
toConfluent.SchemaRegistry.Serdes
(Schema Registry may support other serialization formats in the future). - Added an example demonstrating working with protobuf serialized data.
- There are now two types of serializer and deserializer:
Consumer
s,Producer
s andAdminClient
s are now constructed using builder classes.- This is more verbose, but provides a sufficiently flexible and future proof API for specifying serdes and other configuration information.
- All
event
s on the client classes have been replaced with correspondingSet...Handler
methods on the builder classes.- This allows (enforces) handlers are set on librdkafka initialization (which is important for some handlers, particularly the log handler).
event
s allow for more than one handler to be set, but this is often not appropriate (e.g.OnPartitionsAssigned
), and never necessary. This is no longer possible.event
s are also not async friendly (handlers can't returnTask
). The Set...Handler appropach can be extend in such a way that it is.
- Avro serdes no longer make blocking calls to
ICachedSchemaRegistryClient
- everything isawait
ed.- Note: The
Consumer
implementation still calls async deserializers synchronously because theConsumer
API is still otherwise fully synchronous.
- Note: The
- Reference librdkafka.redist 1.0.0-RC7
- Notable features: idempotent producer, sparse connections, KIP-62 (max.poll.interval.ms).
- Note: End of partition notification is now disabled by default (enable using the
EnablePartitionEof
config property).
- Removed the
Consumer.OnPartitionEOF
event in favor notifying of partition eof viaConsumeResult.IsPartitionEOF
. - Removed
ErrorEvent
class and addedIsFatal
toError
class.- The
IsFatal
flag is now set appropriately for all errors (previously it was always set tofalse
).
- The
- Added
PersistenceStatus
property toDeliveryResult
, which provides information on the persitence status of the message.
Fixes
- Added
Close
method toIConsumer
interface. - Changed the name of
ProduceException.DeliveryReport
toProduceException.DeliveryResult
. - Fixed bug where enum config property couldn't be read after setting it.
- Added
SchemaRegistryBasicAuthCredentialsSource
back intoSchemaRegistryConfig
(#679). - Fixed schema registry client failover connection issue (#737).
- Improvements to librdkafka dependnecy discovery (#743).
v1.0-beta2
New Features
- References librdkafka 1.0.0-PRE1. Highlights:
- Idempotent producer.
- Sparse connections (broker connections are only held open when in use).
Enhancements / Fixes
- Fixed a memory leak in
ProduceAsync
#640 (regression from 0.11.x).