All Versions
59
Latest Version
Avg Release Cycle
19 days
Latest Release
-

Changelog History
Page 6

  • v1.0-RC5

    April 18, 2019
  • v1.0.0-RC4 Changes

    ๐Ÿ”„ Changes

    • โœ‚ Removed SerializationContext from non-async serde interfaces.
    • Replaced ISerializer interface with Serializer delegate.
    • Replaced IDeserializer interface with Deserializer delegate.
  • v1.0.0-RC3 Changes

    ๐Ÿ†• 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.

    ๐Ÿ”„ Changes

    • โœ‚ Removed the Confluent.Kafka.Serdes namespace.

    ๐Ÿ›  Fixes

    • โž• Added CompressionType property to ProducerConfig class.
  • v1.0.0-RC2 Changes

    ๐Ÿ†• New Features

    • ๐Ÿš€ References librdkafka.redist v1.0.0

    ๐Ÿ”„ Changes

    • ๐Ÿšš Moved API docs from the client classes to their respective interfaces.
    • โšก๏ธ Update formatting of client API docs so they display well in Visual Studio Code intellisense.
  • v1.0.0-RC1 Changes

    ๐Ÿ†• 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 into SetPartitionsAssignedHandler and SetPartitionsRevokedHandler.
      • 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 to Message.Status.
    • ๐Ÿšš Moved the GetWatermarkOffsets and QueryWatermarkOffsets methods from admin client to consumer.
    • Context is now provided to serdes via a SerializationContext class instance.

    ๐Ÿ›  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 causing ProduceAsync to hang in some scenarios.
    • ๐Ÿ›  Fixed a deadlock-on-dispose issue in AdminClient.
    • Made Producer.ProduceAsync async.
  • v1.0.0-beta3 Changes

    ๐Ÿ†• New Features

    • Revamped producer and consumer serialization functionality.
      • There are now two types of serializer and deserializer: ISerializer<T> / IAsyncSerializer<T> and IDeserializer<T> / IAsyncDeserializer<T>.
      • ISerializer<T>/IDeserializer<T> are appropriate for most use cases.
      • IAsyncSerializer<T>/IAsyncDeserializer<T> are async friendly, but less performant (they return Tasks).
      • Changed the name of Confluent.Kafka.Avro to Confluent.SchemaRegistry.Serdes (Schema Registry may support other serialization formats in the future).
      • Added an example demonstrating working with protobuf serialized data.
    • ๐Ÿ— Consumers, Producers and AdminClients 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 events on the client classes have been replaced with corresponding Set...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).
      • events 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.
      • events are also not async friendly (handlers can't return Task). The Set...Handler appropach can be extend in such a way that it is.
    • Avro serdes no longer make blocking calls to ICachedSchemaRegistryClient - everything is awaited.
      • Note: The Consumer implementation still calls async deserializers synchronously because the Consumer API is still otherwise fully synchronous.
    • ๐Ÿš€ 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 via ConsumeResult.IsPartitionEOF.
    • โœ‚ Removed ErrorEvent class and added IsFatal to Error class.
      • The IsFatal flag is now set appropriately for all errors (previously it was always set to false).
    • โž• Added PersistenceStatus property to DeliveryResult, which provides information on the persitence status of the message.

    ๐Ÿ›  Fixes

    • โž• Added Close method to IConsumer interface.
    • ๐Ÿ”„ Changed the name of ProduceException.DeliveryReport to ProduceException.DeliveryResult.
    • ๐Ÿ›  Fixed bug where enum config property couldn't be read after setting it.
    • โž• Added SchemaRegistryBasicAuthCredentialsSource back into SchemaRegistryConfig (#679).
    • ๐Ÿ›  Fixed schema registry client failover connection issue (#737).
    • ๐Ÿ‘Œ Improvements to librdkafka dependnecy discovery (#743).
  • v1.0.0-beta2 Changes

    ๐Ÿ†• 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).
  • v1.0.0-beta Changes

    ๐Ÿ†• New Features

    • โž• Added an AdminClient, providing CreateTopics, DeleteTopics, CreatePartitions, DescribeConfigs and AlterConfigs.
    • Can now produce / consume message headers.
    • Can now produce user defined timestamps.
    • โž• Added IClient, IProducer and IConsumer interfaces (useful for dependency injection and mocking when writing tests).
    • โž• Added a Handle property to all clients classes:
      • Producers can utilize the underlying librdkafka handle from other Producers (replaces the 0.11.x GetSerializingProducer method on the Producer class).
      • AdminClient can utilize the underlying librdkafka handle from other AdminClients, Producers or Consumers.
    • ๐ŸŽ IDeserializer now exposes message data via ReadOnlySpan<byte>, directly referencing librdkafka allocated memory. This results in a considerable (up to 2x) performance increase and reduced memory.
    • Most blocking operations now accept a CancellationToken parameter.
      • TODO: in some cases there is no backing implementation yet.
    • ๐Ÿ”ง .NET Specific configuration parameters are all specified/documented in the ConfigPropertyNames class.

    Major Breaking API Changes

    • ๐Ÿ›ฐ The Message class has been re-purposed and now encapsulates specifically the message payload only.
      • ProduceAsync / BeginProduce now return a DeliveryReport object and Consumer.Consume returns a ConsumeResult object.
    • The methods used to produce messages have changed:
      • Methods that accept a callback are now named BeginProduce (not ProduceAsync), analogous to similar methods in the standard library.
      • Callbacks are now specified as Action<DeliveryReportResult<TKey, TValue>> delegates, not implementations of IDeliveryHandler.
      • The IDeliveryHandler interface has been depreciated.
      • There are two variants of ProduceAsync and BeginProduce, the first takes a topic name and a Message. The second takes a TopicPartition and a message.
      • i.e. when producing, there is now clear separation between what is produced and where it is produced to.
      • The new API is more future proof.
      • ProduceAsync now calls SetException instead of SetResult on the returned Task, making error checking more convenient and less prone to developer mistakes.
    • ๐Ÿšš The feature to block ProduceAsync calls on local queue full has been removed (result in Local_QueueFull error). This should be implemented at the application layer if required.
    • ๐Ÿšš The non-serializing Producer and non-deserializing Consumer types have been removed (use generic types with byte[] instead), considerably reducing API surface area.
    • ๐Ÿšš The ISerializingProducer interface has been removed - you can achieve the same functionality by sharing client handles instead.
    • ๐Ÿšš The Consumer.Poll method and corresponding OnMessage event have been removed. You should use Consumer.Consume instead.
    • ๐Ÿšš The Consumer.OnConsumeError has been removed. Consume errors are now exposed via a ConsumeException.
    • The Consumer.Consume method now returns a ConsumeResult object, rather than a Message via an out parameter.
    • ๐Ÿšš CommitAsync has been removed (use Commit instead).
    • ๐Ÿ‘ป Commit errors are reported via an exception and method return values have correspondingly changed.
    • ๐Ÿ“‡ ListGroups, ListGroup, GetWatermarkOffsets, QueryWatermarkOffsets, and GetMetadata have been removed from Producer and Consumer and exposed only via AdminClient.
    • โž• Added Consumer.Close.
    • ๐Ÿ‘ป Various methods that formerly returned TopicPartitionOffsetError / TopicPartitionError now return TopicPartitionOffset / TopicPartition and throw an exception in case of error (with a Result property of type TopicPartitionOffsetError / TopicPartitionError).

    Minor Breaking API Changes

    • โœ‚ Removed cast from Error to bool.
    • ๐Ÿ‘ป Consumer.OffsetsForTimes if provided an empty collection will return an empty collection (not throw an exception).
    • ๐Ÿ”ง manualPoll argument has been removed from the Producer constructor and is now a configuration option.
    • ๐Ÿ”ง enableDeliveryReports argument has been removed from the Producer constructor and is now a configuration option.
    • โœ‚ Removed methods with a millisecondsTimeout parameter (always preferring a TimeSpan parameter).
    • โž• Added Consumer.Consume variants with a CancellationToken parameter.
    • โž• Added A Producer.Flush method variant without a timeout parameter (but with a CancellationToken parameter that is observed).
    • โž• Added the SyslogLevel enumeration, which is used by the log handler delegate.

    ๐Ÿ›  Minor Enhancements / Fixes

    • When delivery reports are disabled, ProduceAsync will return completed Tasks rather than Tasks that will never complete.
    • Avro serializers / deserializer now handle null values.
    • โฌ†๏ธ Examples upgraded to target 2.1.
    • ๐Ÿ”„ Changed name of HasError to IsError
    • ๐ŸŽ Configuration options have been added to allow fine-grained control over of marshalling of values to/from librdkafka (for high performance usage).
      • headers, message keys and values, timestamps and the topic name.
    • ๐Ÿ‘Œ Improved XML API documentation.
  • v0.11.5 Changes

    ๐Ÿš€ refer to the release notes