- [Feature] Add FD-based polling mode (
config.polling.mode = :fd) as an alternative to the default thread-based polling. FD mode uses a single Ruby thread with IO.select for efficient multiplexing, providing 39-54% higher throughput, lower memory usage, and fewer threads compared to the default thread mode. - [Feature] Add
config.polling.fd.max_timesetting (default: 100ms) to control maximum polling time per producer per cycle. This enables per-producer priority differentiation. - [Feature] Add
Producer#queue_size(alias:#queue_length) to return the count of messages pending in the librdkafka queue. This counts messages that have been dispatched to librdkafka but not yet transmitted to the Kafka broker. - [Enhancement] Add
poll_nbandpoll_drainmethods to rdkafka Producer for efficient non-blocking polling without GVL release overhead. - [Enhancement] Add
poller.producer_registeredandpoller.producer_unregisteredinstrumentation events for FD mode. - [Change] Update to use
max_wait_timeout_msparameter in rdkafkaAbstractHandle#waitfor consistency with librdkafka conventions. - [Change] Require
karafka-rdkafka>=0.24.0due tomax_wait_timeout_msAPI change and FD polling support.