- Allow the liveness probe command to skip loading config files
- Add unix domain socket support for Datadog StatsD metrics
- Bump minimum rdkafka gem version to 0.15.0
- Bump minimum Ruby version to 3.0
- Configurable strategy for consuming multiple topics
- Bump rdkafka gem version to 0.13.0
- Support cooperative-sticky
- Instrument produce delivery errors
- Resolve Rails 7.1 logger incompatibility
- Don't load rails env for liveness probe
- Fix config load for liveness probe
- Send exceptions to
process_batch
instrumenter - Docker test fixes
- Test in CI with Ruby 3.2
- Add
partitioner
producer config option to allow changing the strategy to determine which topic partition a message is written to when racecar produces a kafka message - Add built-in liveness probe for Kubernetes deployments.
- Handles ErroneousStateError, in previous versions the consumer would do several unnecessary group leave/joins. The log level is also changed to WARN instead of ERROR. (#295)
- Adds new ErroneousStateError to racecar in order to give more information on this new possible exception.
- Update librdkafka version from 1.8.2 to 1.9.0 by upgrading from rdkafka 0.10.0 to 0.12.0. (#293)
- Update librdkafka version from 1.5.0 to 1.8.2 by upgrading from rdkafka 0.10.0 to 0.11.1. (#283)
- Bumps minimum required Ruby version to 2.6
- Add capability to specify partition number when producing messages
fetch_messages
can be configured per consumer, just as the maximum timeout to wait for a full batch.
- Update librdkafka version from 1.4.0 to 1.5.0 by upgrading from rdkafka 0.8.0 to 0.10.0. (#263)
- Restore support for Ruby 2.4 (#258)
- Handle
ERR_NOT_COORDINATOR
(#209)
- Add native support for Heroku (#248)
- [Racecar::Consumer] When messages fail to deliver, an extended error with hints is now raised. Instead of
Rdkafka::RdkafkaError
you'll get aRacecar::MessageDeliveryError
instead. (#219). If you have set aRacecar.config.error_handler
, it might need to be updated. - [Racecar::Consumer] When message delivery times out, Racecar will reset the producer in an attempt to fix some of the potential causes for this error. (#219)
- Validate the
process
andprocess_batch
method signature on consumer classes when initializing (#236) - Add Ruby 3.0 compatibility (#237)
- Introduce parallel runner, which forks a number of independent consumers, allowing partitions to be processed in parallel. (#222)
- [Racecar::Runner] Ensure producer is closed, whether it closes or errors. (#222)
- Configure
statistics_interval
directly in the config. Disable statistics when no callback is defined (#232)
- [Racecar::ConsumerSet] breaking change
Racecar::ConsumerSet
's functionspoll
andbatch_pall
expect the max wait values to be given in milliseconds. The defaults were usingconfig.max_wait_time
, which is in seconds. If you do not directly useRacecar::ConsumerSet
, or always call itspoll
andbatch_poll
functions by specfiying the max wait time (the first argument), then this breaking change does not affect you. (#214)
- [Bugfix] Close RdKafka consumer in ConsumerSet#reset_current_consumer to prevent memory leak (#196)
- [Bugfix]
poll
/batch_poll
would not retry in edge cases and raise immediately. They still honor themax_wait_time
setting, but might return no messages instead and only retry on their next call. (#177)
- Bump rdkafka to 0.8.0 (#191)
- Replace
ruby-kafka
withrdkafka-ruby
as the low-level library underneath Racecar (#91). - Fix
max_wait_time
usage (#179). - Removed config option
sasl_over_ssl
. - [Racecar::Consumer] Do not pause consuming partitions on exception.
- [Racecar::Consumer]
topic
,payload
andkey
are mandadory to methodproduce
. - [Racecar::Consumer]
process_batch
retrieves an array of messages instead of batch object. - [Racecar::Consumer] Remove
offset_retention_time
. - [Racecar::Consumer] Allow providing
additional_config
for subscriptions. - [Racecar::Consumer] Provide access to
producer
andconsumer
. - [Racecar::Consumer] Enforce delivering messages with method
deliver!
. - [Racecar::Consumer] instead of raising when a partition EOF is reached, the result can be queried through
consumer.last_poll_read_partition_eof?
. - [Racecar::Config] Remove
offset_retention_time
,connect_timeout
andoffset_commit_threshold
. - [Racecar::Config] Pass config to
rdkafka-ruby
viaproducer
andconsumer
. - [Racecar::Config] Replace
max_fetch_queue_size
withmin_message_queue_size
. - [Racecar::Config] Add
synchronous_commits
to control blocking ofconsumer.commit
(defaultfalse
). - [Racecar::Config] Add
security_protocol
to control protocol between client and broker. - [Racecar::Config] SSL configuration via
ssl_ca_location
,ssl_crl_location
,ssl_keystore_location
andssl_keystore_password
. - [Racecar::Config] SASL configuration via
sasl_mechanism
,sasl_kerberos_service_name
,sasl_kerberos_principal
,sasl_kerberos_kinit_cmd
,sasl_kerberos_keytab
,sasl_kerberos_min_time_before_relogin
,sasl_username
andsasl_password
. - [Instrumentation]
produce_message.racecar
sent whenever a produced message is queued. Payload includestopic
,key
,value
andcreate_time
. - [Instrumentation]
acknowledged_message.racecar
send whenever a produced message was successfully received by Kafka. Payload includesoffset
andpartition
, but no message details. - [Instrumentation]
rdkafka-ruby
does not yet provide instrumentation rdkafka-ruby#54. - [Instrumentation] if processors define a
statistics_callback
, it will be called once every second for every subscription or producer connection. The first argument will be a Hash, for contents see librdkafka STATISTICS.md. - Add current directory to
$LOAD_PATH
only when--require
option is used (#117). - Remove manual heartbeat support, see Long-running message processing section in README.
- Rescue exceptions--then log and pass to
on_error
--at the outermost level ofexe/racecar
, so that exceptions raised outsideCli.run
are not silently discarded (#186). - When exceptions with a
cause
are logged, recursively log thecause
detail, separated by--- Caused by: ---\n
.
Unchanged from v0.5.0.
- Add support for manually sending heartbeats with
heartbeat
(#105). - Allow configuring
sasl_over_ssl
. - Add current directory to
$LOAD_PATH
only when--require
option is used (#117). - Support for
ssl_verify_hostname
in the configuration (#120)
- Allow configuring
max_bytes
andmax_fetch_queue_size
.
- Allow configuring the producer (#77).
- Add support for configuring exponential pause backoff (#76).
- Require Kafka 0.10 or higher.
- Support configuring SASL SCRAM authentication (#65).
- Change the default
max_wait_time
to 1 second. - Allow setting the
offset_retention_time
for consumers. - Allow pausing partitions indefinitely (#63).
- Allow setting the key and/or partition key when producing messages.
- Allow producing messages (alpha).
- Instrument using ActiveSupport::Notifications (#43).
- Add support for SASL.
- Use KingKonf for defining configuration variables.
- Allow setting configuration variables through the CLI.
- Make all configuration variables available over the ENV.
- Allow configuring Datadog monitoring.