- [Change] Upscale default timeout values 3x closer to librdkafka defaults to prevent intermediate timeouts during node recovery (
message.timeout.ms: 50s → 150s,transaction.timeout.ms: 55s → 165s,max_wait_timeout: 60s → 180s).
- [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.
- [Enhancement] Skip statistics decoration and emission when no listeners are subscribed to
statistics.emittedevents to reduce overhead. - [Enhancement] Support late subscription to
statistics.emittedby checking for listeners on each emission (every 5 seconds).
- [Fix] Fatal error replacement not working without exact error unwind from the fatal envelope
- [Testing] Add
WaterDrop::Producer::Testingmodule for injecting and querying librdkafka fatal errors in tests. - [Testing] Add
#trigger_test_fatal_error(error_code, reason)method to simulate fatal errors without requiring actual broker-side conditions. - [Testing] Add
#fatal_errormethod to query current fatal error state for validation in tests. - [Testing] Add comprehensive test coverage for fatal error injection, reload behavior, and event instrumentation with real librdkafka errors.
- [Change] Require
karafka-rdkafka>=0.23.1due to error handling fixes.
- [Enhancement] Make
fencederror skip-reload behavior configurable via newnon_reloadable_errorssetting (defaults to[:fenced]for backward compatibility). - [Enhancement] Add
producer.reloadevent allowing config modification before reload to escape fencing loops (#706). - [Enhancement] Do not early initialize the new instance on reload.
- [Enhancement] Introduce
reload_on_idempotent_fatal_errorto automatically reload librdkafka producer after fatal errors on idempotent (non-transactional) producers. - [Enhancement] Add configurable backoff and retry limits for fatal error recovery to prevent infinite reload loops:
wait_backoff_on_idempotent_fatal_error(default: 5000ms) - backoff before retrying after idempotent fatal error reloadmax_attempts_on_idempotent_fatal_error(default: 5) - max reload attempts for idempotent fatal errorswait_backoff_on_transaction_fatal_error(default: 1000ms) - backoff after transactional fatal error reloadmax_attempts_on_transaction_fatal_error(default: 10) - max reload attempts for transactional fatal errors
- [Enhancement] Ensure
error.occurredis instrumented before idempotent fatal error reload for visibility. - [Enhancement] Automatically reset fatal error reload attempts counter on successful produce/transaction to allow recovery.
- [Refactor] Extract idempotence-related logic into separate
WaterDrop::Producer::Idempotencemodule. - [Refactor] Initialize
@idempotentand@transactionalinstance variables in Producer#initialize for consistent Ruby object shapes optimization. - [Refactor] Add
idempotent_reloadable?andidempotent_retryable?methods to encapsulate idempotent fatal error reload checks. - [Refactor] Add
transactional_retryable?method to encapsulate transactional fatal error reload retry checks. - [Fix] Waterdrop
config.kafkaerrors on frozen hash. - [Fix]
Producer#transactional?method now correctly computes transactional status when@transactionalis initialized to nil.
- [Enhancement] Provide fast-track for middleware-less flows (20% faster) for single message, 5000x faster for batches.
- [Enhancement] Optimize middlewares application by around 20%.
- [EOL] Remove Ruby
3.1according to the EOL schedule. - [Fix] Connection pool timeout parameter now accepts milliseconds instead of seconds for consistency with other WaterDrop timeouts. The default timeout has been changed from
5seconds to5000milliseconds (equivalent value).
- [Enhancement] Add
#closealias forWaterDrop::ConnectionPool#shutdownto align with producer API for consistent interface across both individual producers and connection pools. - [Enhancement] Add
WaterDrop.monitormethod as the preferred alias forWaterDrop.instrumentationto align with per-producer API naming convention. Theinstrumentationmethod remains available as a deprecated alias for backward compatibility.
- [Enhancement] Add connection pool lifecycle events to global instrumentation for improved observability. Events include
connection_pool.created,connection_pool.setup,connection_pool.shutdown,connection_pool.reload, andconnection_pool.reloaded. - [Enhancement] Add default connection pool transactional direct API.
- [Feature] Add
WaterDrop::ConnectionPoolfor efficient connection pooling using the provenconnection_poolgem. - [Feature] Add
WaterDrop.instrumentationclass-level instrumentation for producer lifecycle events. This allows external libraries to subscribe toproducer.createdandproducer.configuredevents without needing producer instance references, enabling middleware injection and configuration by libraries like Datadog tracing. - [EOL] Remove Ruby
3.1specs according to the EOL schedule.
- [Enhancement] Disable Nagle algorithm by default (improves latency / aligned with librdkafka)
- [Change] Normalize how libs and dependencies are required (no functional change for the end user)
- [Feature] Add
idle_disconnect_timeoutconfig option to automatically disconnect idle producers after a configurable timeout period. - [Feature] Add support for async gems ecosystem with proper fiber yielding during blocking operations.
- [Feature] Add integration testing infrastructure with
bin/integrationsrunner for testing external ecosystem compatibility. - [Enhancement] Introduce the
WaterDrop::Producer#disconnectso users can write custom logic to save on connections then producer is only used from time to time. - [Enhancement] Introduce
WaterDrop::Producer#inspectthat is mutex-safe. - [Enhancement] Raise errors on detected Ruby warnings.
- [Enhancement] Optimize producer for Ruby shapes.
- [Enhancement] Add integration spec to validate fiber yielding behavior with async gems.
- [Change] Require
karafka-rdkafka>=0.20.0. - [Change] Add new CI action to trigger auto-doc refresh.
- [Enhancement] Normalize topic + partition logs format (single place).
- [Fix] A producer is not idempotent unless the enable.idempotence config is
true(ferrous26).
- [Change] Require
karafka-rdkafka>= 0.19.2due to new partition count caching usage. - [Change] Move to trusted-publishers and remove signing since no longer needed.
- [Enhancement] Support producing messages with arrays of strings in headers (KIP-82).
- [Refactor] Introduce a
bin/verify_topics_namingscript to ensure proper test topics naming convention. - [Refactor] Remove factory bot and active support requirement in tests/dev.
- [Change] Require
karafka-rdkafka>= 0.19.1due to KIP-82.
- [Feature] Allow for tagging of producer instances similar to how consumers can be tagged.
- [Refactor] Ensure all test topics in the test suite start with "it-" prefix.
- [Refactor] Introduce a
bin/verify_kafka_warningsscript to clean Kafka from temporary test-suite topics.
- [Enhancement] Raise
WaterDrop::ProducerNotTransactionalErrorwhen attempting to use transactions on a non-transactional producer. - [Fix] Disallow closing a producer from within a transaction.
- [Fix] WaterDrop should prevent opening a transaction using a closed producer.
This release contains BREAKING changes. Make sure to read and apply upgrade notes.
- [Breaking] Require Ruby
3.1+. - [Breaking] Remove ability to abort transactions using
throw(:abort). Please useraise WaterDrop::Errors::AbortTransaction. - [Breaking] Disallow (similar to ActiveRecord) exiting transactions with
return,breakorthrow. - [Breaking] License changed from MIT to LGPL with an additional commercial option. Note: there is no commercial code in this repository. The commercial license is available for companies unable to use LGPL-licensed software for legal reasons.
- [Enhancement] Make variants fiber safe.
- [Enhancement] In transactional mode do not return any
dispatchedmessages as none will be dispatched due to rollback. - [Enhancement] Align the
LoggerListenerasync messages to reflect, that messages are delegated to the internal queue and not dispatched. - [Fix] Ensure, that
:dispatchedkey for#produce_many_syncalways contains delivery handles (final) and not delivery reports.
- [Maintenance] Alias
WaterDrop::Errors::AbortTransactionwithWaterDrop::AbortTransaction. - [Maintenance] Lower the precision reporting to 100 microseconds in the logger listener.
- [Fix] Consumer consuming error: Local: Erroneous state (state) post break flow in transaction.
- [Change] Require 'karafka-core'
>= 2.4.3
- [Enhancement] Introduce
reload_on_transaction_fatal_errorto reload the librdkafka after transactional failures - [Enhancement] Flush on fatal transactional errors.
- [Enhancement] Add topic scope to
report_metric(YadhuPrakash) - [Enhancement] Cache middleware reference saving 1 object allocation on each message dispatch.
- [Enhancement] Provide
#idempotent?similar to#transactional?. - [Enhancement] Provide alias to
#withnamed#variant. - [Fix] Prevent from creating
acksaltering variants on idempotent producers.
- [Fix] Fix missing requirement of
delegatefor non-Rails use-cases. Always require delegate for variants usage (samsm)
- [Feature] Support context-base configuration with low-level topic settings alterations producer variants.
- [Enhancement] Prefix random default
SecureRandom.hex(6)producers ids withwaterdrop-hexto indicate type of object.
This release contains BREAKING changes. Make sure to read and apply upgrade notes.
- [Feature] Support custom OAuth providers.
- [Breaking] Drop Ruby
2.7support. - [Breaking] Change default timeouts so final delivery
message.timeout.msis less thatmax_wait_timeso we do not end up with not final verdict. - [Breaking] Update all the time related configuration settings to be in
msand not mixed. - [Breaking] Remove no longer needed
wait_timeoutconfiguration option. - [Breaking] Do not validate or morph (via middleware) messages added to the buffer prior to
flush_syncorflush_async. - [Enhancement] Provide
WaterDrop::Producer#transaction?that returns only when producer has an active transaction running. - [Enhancement] Introduce
instrument_on_wait_queue_fullflag (defaults totrue) to be able to configure whether non critical (retryable) queue full errors should be instrumented in the error pipeline. Useful when building high-performance pipes with WaterDrop queue retry backoff as a throttler. - [Enhancement] Protect critical
rdkafkathread executable code sections. - [Enhancement] Treat the queue size as a gauge rather than a cumulative stat (isturdy).
- [Fix] Fix a case where purge on non-initialized client would crash.
- [Fix] Middlewares run twice when using buffered produce.
- [Fix] Validations run twice when using buffered produce.
- [Enhancement] Instrument
producer.connectedandproducer.closinglifecycle events.
- [Enhancement] Expose
#partition_countfor building custom partitioners that need to be aware of number of partitions on a given topic.
- [Enhancement] Provide ability to label message dispatches for increased observability.
- [Enhancement] Provide ability to commit offset during the transaction with a consumer provided.
- [Change] Change transactional message purged error type from
message.errortolibrdkafka.dispatch_errorto align with the non-transactional error type. - [Change] Remove usage of concurrent ruby.
- [Enhancement] Return delivery handles and delivery report for both dummy and buffered clients with proper topics, partitions and offsets assign and auto-increment offsets per partition.
- [Fix] Fix a case where buffered test client would not accumulate messages on failed transactions
- [Improvement] Introduce
message.purgedevent to indicate that a message that was not delivered to Kafka was purged. This most of the time refers to messages that were part of a transaction and were not yet dispatched to Kafka. It always means, that given message was not delivered but in case of transactions it is expected. In case of non-transactional it usually means#purgeusage or exceedingmessage.timeout.mssolibrdkafkaremoves this message from its internal queue. Non-transactional producers do not use this and pipe purges toerror.occurred. - [Fix] Fix a case where
message.acknowledgedwould not havecallerkey. - [Fix] Fix a bug where critical errors (like
IRB::Abort) would not abort the ongoing transaction.
- [Improvement] Introduce a
transaction.finishedevent to indicate that transaction has finished whether it was aborted or committed. - [Improvement] Use
transaction.committedevent to indicate that transaction has been committed.
- [Feature] Introduce transactions support.
- [Improvement] Expand
LoggerListenerto inform about transactions (info level). - [Improvement] Allow waterdrop to use topic as a symbol or a string.
- [Improvement] Enhance both
message.acknowledgedanderror.occurred(forlibrdkafka.dispatch_error) with full delivery_report. - [Improvement] Provide
#close!that will force producer close even with outgoing data after the ma wait timeout. - [Improvement] Provide
#purgethat will purge any outgoing data and data from the internal queues (both WaterDrop and librdkafka). - [Fix] Fix the
librdkafka.dispatch_errorerror dispatch for errors with negative code.
- [Improvement] early flush data from
librdkafkainternal buffer before closing. - [Maintenance] Update the signing cert as the old one expired.
- [Improvement] Provide
log_messagesoption toLoggerListenerso the extensive messages data logging can disabled.
- [Fix] Add cause to the errors that are passed into instrumentation (konalegi)
- [Improvement] Use original error
#inspectforWaterDrop::Errors::ProduceErrorandWaterDrop::Errors::ProduceManyErrorinstead of the current empty string.
- [Change] Use
Concurrent::AtomicFixnumto track operations in progress to prevent potential race conditions on JRuby and TruffleRuby (not yet supported but this is for future usage). - [Change] Require
karafka-rdkafka>= 0.13.2. - [Change] Require 'karafka-core'
>= 2.1.1
- [Refactor] Introduce a counter-based locking approach to make sure, that we close the producer safely but at the same time not to limit messages production with producing lock.
- [Refactor] Make private methods private.
- [Refactor] Validate that producer is not closed only when attempting to produce.
- [Refactor] Improve one 5 minute long spec to run in 10 seconds.
- [Refactor] clear client assignment after closing.
- [Refactor] Remove no longer needed patches.
- [Fix] Fork detection on a short lived processes seems to fail. Clear the used parent process client reference not to close it in the finalizer (#356).
- [Change] Require
karafka-rdkafka>= 0.13.0. - [Change] Require 'karafka-core'
>= 2.1.0
- [Improvement] Introduce
client_classsetting for ability to replace underlying client with anything specific to a given env (dev, test, etc). - [Improvement] Introduce
Clients::Buffereduseful for writing specs that do not have to talk with Kafka (id-ilych) - [Improvement] Make
#producemethod private to avoid confusion and make sure it is not used directly (it is not part of the official API). - [Change] Change
wait_on_queue_fullfromfalsetotrueas a default. - [Change] Rename
wait_on_queue_full_timeouttowait_backoff_on_queue_fullto match what it actually does. - [Enhancement] Introduce
wait_timeout_on_queue_fullwith proper meaning. That is, this represents time after which despite backoff the error will be raised. This should allow to raise an error in case the backoff attempts were insufficient. This prevents from a case, where upon never deliverable messages we would end up with an infinite loop. - [Fix] Provide
typefor queue full errors that references the appropriate public API method correctly.
- [Enhancement] Include topic name in the
error.occurrednotification payload. - [Enhancement] Include topic name in the
message.acknowledgednotification payload. - [Maintenance] Require
karafka-core2.0.13
- [Fix] Require missing Pathname (#345)
- [Feature] Introduce a configurable backoff upon
librdkafkaqueue full (false by default).
- [Feature] Pipe all the errors including synchronous errors via the
error.occurred. - [Improvement] Pipe delivery errors that occurred not via the error callback using the
error.occurredchannel. - [Improvement] Introduce
WaterDrop::Errors::ProduceErrorandWaterDrop::Errors::ProduceManyErrorfor any inline raised errors that occur. You can get the original error by using the#cause. - [Improvement] Include
#dispatchedmessages handler in theWaterDrop::Errors::ProduceManyErrorerror, to be able to understand which of the messages were delegated tolibrdkafkaprior to the failure. - [Maintenance] Remove the
WaterDrop::Errors::FlushFailureErrorin favour of correct error that occurred to unify the error handling. - [Maintenance] Rename
Datadog::ListenertoDatadog::MetricsListenerto align with Karafka (#329). - [Fix] Do not flush when there is no data to flush in the internal buffer.
- [Fix] Wait on the final data flush for short-lived producers to make sure, that the message is actually dispatched by
librdkafkaor timeout.
- Replace the local rspec locator with generalized core one.
- Make
::WaterDrop::Instrumentation::Notifications::EVENTSlist public for anyone wanting to re-bind those into a different notification bus.
- Include
callerin the error instrumentation to align with Karafka.
- Remove empty debug logging out of
LoggerListener. - Do not lock Ruby version in Karafka in favour of
karafka-core. - Make sure
karafka-coreversion is at least2.0.9to make sure we runkarafka-rdkafka.
- Use monotonic time from Karafka core.
- Add support to customizable middlewares that can modify message hash prior to validation and dispatch.
- Fix a case where upon not-available leader, metadata request would not be retried
- Require
karafka-core2.0.7.
- Set
statistics.interval.msto 5 seconds by default, so the defaults cover all the instrumentation out of the box.
- Fix invalid error scope visibility.
- Cache partition count to improve messages production and lower stress on Kafka when
partition_keyis on.
- Add temporary patch on top of
rdkafka-rubyto mitigate metadata fetch timeout failures.
- Support for librdkafka 0.13
- Update Github Actions
- Change auto-generated id from
SecureRandom#uuidtoSecureRandom#hex(6) - Remove shared components that were moved to
karafka-corefrom WaterDrop
- Allow sending tombstone messages (#267)
- Replace local statistics decorator with the one extracted to
karafka-core.
- Small refactor of the DataDog/Statsd listener to align for future extraction to
karafka-common. - Replace
dry-monitorwith home-brew notification layer (API compatible) and allow for usage withActiveSupport::Notifications. - Remove all the common code into
karafka-coreand add it as a dependency.
- Replace
dry-validationwith home-brew validation layer and drop direct dependency ondry-validation. - Remove indirect dependency on dry-configurable from DataDog listener (no changes required).
- Replace
dry-configurablewith home-brew config and drop direct dependency ondry-configurable.
- Update rdkafka patches to align with
0.12.0and0.11.1support.
- Rename StdoutListener to LoggerListener (#240)
- Add Datadog listener for metrics + errors publishing
- Add Datadog example dashboard template
- Update Readme to show Dd instrumentation usage
- Align the directory namespace convention with gem name (waterdrop => WaterDrop)
- Introduce a common base for validation contracts
- Drop CI support for ruby 2.6
- Require all
kafkasettings to have symbol keys (compatibility with Karafka 2.0 and rdkafka)
- Ruby 3.1 support
- Change the error notification key from
error.emittedtoerror.occurred. - Normalize error tracking and make all the places publish errors into the same notification endpoint (
error.occurred). - Start semantic versioning WaterDrop.
- Source code metadata url added to the gemspec
- Replace
:producerwith:producer_idin events and updateStdoutListeneraccordingly. This change aligns all the events in terms of not publishing the whole producer object in the events. - Add
error.emittedinto theStdoutListener. - Enable
StdoutLoggerin specs for additional integration coverage.
- #218 - Fixes a case, where dispatch of callbacks the same moment a new producer was created could cause a concurrency issue in the manager.
- Fix some unstable specs.
- Fixes an issue where multiple producers would emit stats of other producers causing the same stats to be published several times (as many times as a number of producers). This could cause invalid reporting for multi-kafka setups.
- Fixes a bug where emitted statistics would contain their first value as the first delta value for first stats emitted.
- Fixes a bug where decorated statistics would include a delta for a root field with non-numeric values.
- Introduces support for error callbacks instrumentation notifications with
error.emittedmonitor emitted key for tracking background errors that would occur on the producer (disconnects, etc). - Removes the
:producerkey fromstatistics.emittedand replaces it with:producer_idnot to inject whole producer into the payload - Removes the
:producerkey frommessage.acknowledgedand replaces it with:producer_idnot to inject whole producer into the payload - Cleanup and refactor of callbacks support to simplify the API and make it work with Rdkafka way of things.
- Introduces a callbacks manager concept that will also be within in Karafka
2.0for both statistics and errors tracking per client. - Sets default Kafka
client.idtowaterdropwhen not set. - Updates specs to always emit statistics for better test coverage.
- Adds statistics and errors integration specs running against Kafka.
- Replaces direct
RSpec.describereference with auto-discovery - Patches
rdkafkato provide functionalities that are needed for granular callback support.
- Update
dry-*to the recent versions and update settings syntax to match it - Update Zeitwerk requirement
- Remove rdkafka patch in favour of spec topic pre-creation
- Do not close client that was never used upon closing producer
- Add support for
partition_key - Switch license from
LGPL-3.0toMIT - Switch flushing on close to sync
- Remove Ruby 2.5 support and update minimum Ruby requirement to 2.6
- Fix the
finalizer references object to be finalizedwarning issued with 3.0
- Redesign of the whole API (see
README.mdfor the use-cases and the current API) - Replace
ruby-kafkawithrdkafka - Switch license from
MITtoLGPL-3.0 - #113 - Add some basic validations of the kafka scope of the config (Azdaroth)
- Global state removed
- Redesigned metrics that use
rdkafkainternal data + custom diffing - Restore JRuby support
- Release to match Karafka 1.4 versioning.
- Support for new
dry-configurable
- #119 - Support exactly once delivery and transactional messaging (kylekthompson)
- #119 - Support delivery_boy 1.0 (kylekthompson)
- Ruby 2.7.0 support
- Fix missing
delegatedependency onruby-kafka
- Ruby 2.6.5 support
- Expose setting to optionally verify hostname on ssl certs #109 (tabdollahi)
- Drop Ruby 2.4 support
- Drop Ruby 2.3 support
- Drop support for Kafka 0.10 in favor of native support for Kafka 0.11.
- Ruby 2.6.3 support
- Support message headers
sasl_over_sslsupport- Unlock Ruby Kafka + provide support for 0.7 only
- #60 - Rename listener to StdoutListener
- Drop support for Kafka 0.10 in favor of native support for Kafka 0.11.
- Support ruby-kafka 0.7
- Support message headers
sasl_over_sslsupportssl_client_cert_key_passwordsupport- #87 - Make stdout listener as instance
- Use Zeitwerk for gem code loading
- #93 - zstd compression support
- #99 - schemas are renamed to contracts
- Bump delivery_boy (0.2.7 => 0.2.8)
- Bump dependencies to match Karafka
- drop jruby support
- drop ruby 2.2 support
- Due to multiple requests, unlock of 0.7 with an additional post-install message
- Lock ruby-kafka to 0.6 (0.7 support targeted for WaterDrop 1.3)
- #55 - Codec settings unification and config applier
- #54 - compression_codec api sync with king-konf requirements
- #45 - Allow specifying a create time for messages
- #47 - Support SCRAM once released
- #49 - Add lz4 support once merged and released
- #50 - Potential message loss in async mode
- Ruby 2.5.0 support
- Gem bump to match Karafka framework versioning
- #48 - ssl_ca_certs_from_system
- #52 - Use instrumentation compatible with Karafka 1.2
- Added high level retry on connection problems
- #37 - ack level for producer
- Gem bump
- Ruby 2.4.2 support
- Raw ruby-kafka driver is now replaced with delivery_boy
- Sync and async producers
- Complete update of the API
- Much better validations for config details
- Complete API remodel - please read the new README
- Renamed send_messages to deliver
- Bump to match Karafka
- Renamed
hoststoseed_brokers - Removed the
sslscoping forkafkaconfig namespace to better match Karafka conventions - Added
client_idoption on a root config level - Added
loggeroption on a root config level - Auto Propagation of config down to ruby-kafka
- Removed support for Ruby 2.1.*
Ruby 2.3.3 as default- Ruby 2.4.0 as default
- Gem dump x2
- Dry configurable config (#20)
- added .rspec for default spec helper require
- Added SSL capabilities
- Coditsu instead of PG dev tools for quality control
- Dev tools update
- Gem update
- Specs updates
- File naming convention fix from waterdrop to water_drop + compatibility file
- Additional params (partition, etc) that can be passed into producer
- Driver change from Poseidon (not maintained) to Ruby-Kafka
- Version dump - this WaterDrop version no longer relies on Aspector to work
- #17 - Logger for Aspector - WaterDrop no longer depends on Aspector
- #8 - add send date as a default value added to a message - wont-fix. Should be implemented on a message level since WaterDrop just transports messages without adding additional stuff.
- #11 - same as above
- Resolved bug #15. When you use waterdrop in aspect way, message will be automatically parse to JSON.
- Removed default to_json casting because of binary/other data types incompatibility. This is an incompatibility. If you use WaterDrop, please add a proper casting method to places where you use it.
- Gem dump
- Poseidon options extractions and tweaks
- Switched raise_on_failure to ignore all StandardError failures (or not to), not just specific once
- Reloading inside connection pool connection that seems to be broken (one that failed) - this should prevent from multiple issues (but not from single one) that are related to the connection
- Required acks and set to -1 (most secure but slower)
- Added a proxy layer to to producer so we could replace Kafka with other messaging systems
- Gem dump
- proper poseidon clients names (not duplicated)
- kafka_host, kafka_hosts and kafka_ports settings consistency fix
- Added null-logger gem
- raise_on_failure flag to ignore (if false) that message was not sent
- Renamed WaterDrop::Event to WaterDrop::Message to follow Apache Kafka naming convention
- Gems cleanup
- Requirements fix
- Initial gem release