- [Enhancement] Bump librdkafka to 2.6.1
- [Enhancement] Expose
rd_kafka_global_init
to mitigate macos forking issues. - [Enhancement] Avoid clobbering LDFLAGS and CPPFLAGS if in a nix prepared environment (secobarbital).
- [Patch] Retire no longer needed cooperative-sticky patch.
- [Breaking] Drop Ruby 3.0 support
- [Enhancement] Update
librdkafka
to2.5.3
- [Enhancement] Use default oauth callback if none is passed (bachmanity1)
- [Fix] Fix incorrectly behaving CI on failures.
- [Patch] Patch with "Add forward declaration to fix compilation without ssl" fix
- [Enhancement] Update
librdkafka
to2.5.0
- [Enhancement] Do not release GVL on
rd_kafka_name
(ferrous26) - [Patch] Patch cooperative-sticky assignments in librdkafka.
- [Fix] Mitigate a case where FFI would not restart the background events callback dispatcher in forks
- [Fix] Fix unused variable reference in producer (lucasmvnascimento)
- [Feature] Add
#seek_by
to be able to seek for a message by topic, partition and offset (zinahia) - [Enhancement] Update
librdkafka
to2.4.0
- [Enhancement] Support ability to release patches to librdkafka.
- [Change] Remove old producer timeout API warnings.
- [Fix] Switch to local release of librdkafka to mitigate its unavailability.
- [Fix] Switch to local release of librdkafka to mitigate its unavailability.
- [Breaking] Retire support for Ruby 2.7.
- [Breaking] Messages without headers returned by
#poll
contain frozen empty hash. - [Breaking]
HashWithSymbolKeysTreatedLikeStrings
has been removed so headers are regular hashes with string keys. - [Feature] Support incremental config describe + alter API.
- [Feature] Oauthbearer token refresh callback (bruce-szalwinski-he)
- [Feature] Provide ability to use topic config on a producer for custom behaviors per dispatch.
- [Enhancement] Use topic config reference cache for messages production to prevent topic objects allocation with each message.
- [Enhancement] Provide
Rrdkafka::Admin#describe_errors
to get errors descriptions (mensfeld) - [Enhancement] Replace time poll based wait engine with an event based to improve response times on blocking operations and wait (nijikon + mensfeld)
- [Enhancement] Allow for usage of the second regex engine of librdkafka by setting
RDKAFKA_DISABLE_REGEX_EXT
during build (mensfeld) - [Enhancement] name polling Thread as
rdkafka.native_kafka#<name>
(nijikon) - [Enhancement] Save two objects on message produced and lower CPU usage on message produced with small improvements.
- [Change] Allow for native kafka thread operations deferring and manual start for consumer, producer and admin.
- [Change] The
wait_timeout
argument inAbstractHandle.wait
method is deprecated and will be removed in future versions without replacement. We don't rely on it's value anymore (nijikon) - [Fix] Background logger stops working after forking causing memory leaks (mensfeld)
- [Fix] Fix bogus case/when syntax. Levels 1, 2, and 6 previously defaulted to UNKNOWN (jjowdy)
- [Fix] Switch to local release of librdkafka to mitigate its unavailability.
- [Enhancement] Provide support for Nix OS (alexandriainfantino)
- [Enhancement] Replace
rd_kafka_offset_store
withrd_kafka_offsets_store
(mensfeld) - [Enhancement] Alias
topic_name
astopic
in the delivery report (mensfeld) - [Enhancement] Provide
label
producer handler and report reference for improved traceability (mensfeld) - [Enhancement] Include the error when invoking
create_result
on producer handle (mensfeld) - [Enhancement] Skip intermediate array creation on delivery report callback execution (one per message) (mensfeld).
- [Enhancement] Report
-1
instead ofnil
in casepartition_count
failure (mensfeld). - [Fix] Fix return type on
#rd_kafka_poll
(mensfeld) - [Fix]
uint8_t
does not exist on Apple Silicon (mensfeld) - [Fix] Missing ACL
RD_KAFKA_RESOURCE_BROKER
constant reference (mensfeld) - [Fix] Partition cache caches invalid nil result for
PARTITIONS_COUNT_TTL
(mensfeld) - [Change] Rename
matching_acl_pattern_type
tomatching_acl_resource_pattern_type
to align the whole API (mensfeld)
- [Feature] Add
Admin#metadata
(mensfeld) - [Feature] Add
Admin#create_partitions
(mensfeld) - [Feature] Add
Admin#delete_group
utility (piotaixr) - [Feature] Add Create and Delete ACL Feature To Admin Functions (vgnanasekaran)
- [Feature] Support
#assignment_lost?
on a consumer to check for involuntary assignment revocation (mensfeld) - [Enhancement] Expose alternative way of managing consumer events via a separate queue (mensfeld)
- [Enhancement] Bump librdkafka to 2.3.0 (mensfeld)
- [Enhancement] Increase the
#lag
and#query_watermark_offsets
default timeouts from 100ms to 1000ms. This will compensate for network glitches and remote clusters operations (mensfeld) - [Change] Use
SecureRandom.uuid
instead ofrandom
for test consumer groups (mensfeld)
- [Fix] Switch to local release of librdkafka to mitigate its unavailability.
- [Enhancement] Add
raise_response_error
flag to theRdkafka::AbstractHandle
. - [Enhancement] Allow for setting
statistics_callback
as nil to reset predefined settings configured by a different gem (mensfeld) - [Enhancement] Get consumer position (thijsc & mensfeld)
- [Enhancement] Provide
#purge
to remove any outstanding requests from the producer (mensfeld) - [Enhancement] Update
librdkafka
to2.2.0
(mensfeld) - [Enhancement] Introduce producer partitions count metadata cache (mensfeld)
- [Enhancement] Increase metadata timeout request from
250 ms
to2000 ms
default to allow for remote cluster operations viardkafka-ruby
(mensfeld) - [Enhancement] Introduce
#name
for producers and consumers (mensfeld) - [Enhancement] Include backtrace in non-raised binded errors (mensfeld)
- [Fix] Reference to Opaque is not released when Admin, Consumer or Producer is closed (mensfeld)
- [Fix] Trigger
#poll
on native kafka creation to handle oauthbearer cb (mensfeld) - [Fix]
#flush
does not handle the timeouts errors by making it returntrue
if all flushed orfalse
if failed. We do not raise an exception here to keep it backwards compatible (mensfeld) - [Change] Remove support for Ruby 2.6 due to it being EOL and WeakMap incompatibilities (mensfeld)
- [Change] Update Kafka Docker with Confluent KRaft (mensfeld)
- [Change] Update librdkafka repo reference from edenhill to confluentinc (mensfeld)
- [Fix] Switch to local release of librdkafka to mitigate its unavailability.
- Support cooperative sticky partition assignment in the rebalance callback (methodmissing)
- Support both string and symbol header keys (ColinDKelley)
- Handle tombstone messages properly (kgalieva)
- Add topic name to delivery report (maeve)
- Allow string partitioner config (mollyegibson)
- Fix documented type for DeliveryReport#error (jimmydo)
- Bump librdkafka to 2.0.2 (lmaia)
- Use finalizers to cleanly exit producer and admin (thijsc)
- Lock access to the native kafka client (thijsc)
- Fix potential race condition in multi-threaded producer (mensfeld)
- Fix leaking FFI resources in specs (mensfeld)
- Improve specs stability (mensfeld)
- Make metadata request timeout configurable (mensfeld)
- call_on_partitions_assigned and call_on_partitions_revoked only get a tpl passed in (thijsc)
- [Fix] Switch to local release of librdkafka to mitigate its unavailability.
- Bumps librdkafka to 1.9.0
- Fix crash on empty partition key (mensfeld)
- Pass the delivery handle to the callback (gvisokinskas)
- Upgrade librdkafka to 1.8.2
- Bump supported minimum Ruby version to 2.6
- Better homebrew path detection
- Upgrade librdkafka to 1.5.0
- Add error callback config
- Fixes for Ruby 3.0
- Allow any callable object for callbacks (gremerritt)
- Reduce memory allocations in Rdkafka::Producer#produce (jturkel)
- Use queue as log callback to avoid unsafe calls from trap context (breunigs)
- Allow passing in topic configuration on create_topic (dezka)
- Add each_batch method to consumer (mgrosso)
- Fix topic_flag behaviour and add tests for Metadata (geoff2k)
- Add topic admin interface (geoff2k)
- Raise an exception if @native_kafka is nil (geoff2k)
- Option to use zstd compression (jasonmartens)
- Upgrade librdkafka to 1.4.0
- Integrate librdkafka metadata API and add partition_key (by Adithya-copart)
- Ruby 2.7 compatibility fix (by Geoff Thé)A
- Add error to delivery report (by Alex Stanovsky)
- Don't override CPPFLAGS and LDFLAGS if already set on Mac (by Hiroshi Hatake)
- Allow use of Rake 13.x and up (by Tomasz Pajor)
- Bump librdkafka to 1.2.0 (by rob-as)
- Allow customizing the wait time for delivery report availability (by mensfeld)
- Bump librdkafka to 1.1.0 (by Chris Gaffney)
- Implement seek (by breunigs)
- Bump librdkafka to 1.0.0 (by breunigs)
- Add cluster and member information (by dmexe)
- Support message headers for consumer & producer (by dmexe)
- Add consumer rebalance listener (by dmexe)
- Implement pause/resume partitions (by dmexe)
- Delivery callback for producer
- Document list param of commit method
- Use default Homebrew openssl location if present
- Consumer lag handles empty topics
- End iteration in consumer when it is closed
- Add support for storing message offsets
- Add missing runtime dependency to rake
- Bump librdkafka to 0.11.6
- Improvements in librdkafka archive download
- Add global statistics callback
- Use Time for timestamps, potentially breaking change if you rely on the previous behavior where it returns an integer with the number of milliseconds.
- Bump librdkafka to 0.11.5
- Implement TopicPartitionList in Ruby so we don't have to keep track of native objects.
- Support committing a topic partition list
- Add consumer assignment method
- Fix crash when not waiting for delivery handles
- Run specs on Ruby 2.5
- Bump librdkafka to 0.11.3
- Fix bug that prevent display of
RdkafkaError
message
add_topic
now supports using a partition count- Add way to make errors clearer with an extra message
- Show topics in subscribe error message
- Show partition and topic in query watermark offsets error message
- Bump librdkafka to 0.11.1
- Officially support ranges in
add_topic
for topic partition list. - Add consumer lag calculator
- Move both add topic methods to one
add_topic
inTopicPartitionList
- Add committed offsets to consumer
- Add query watermark offset to consumer
- Some refactoring and add inline documentation
- Initial working version including producing and consuming