All Versions
112
Latest Version
Avg Release Cycle
5 days
Latest Release
655 days ago
Changelog History
Page 9
Changelog History
Page 9
-
v1.0.0 Changes
Closed issues:
- #103 - Env for logger is loaded 2 early (on gem load not on app init)
- 👍 #142 - Possibility to better control Kafka consumers (consumer groups management)
- #150 - Add support for start_from_beginning on a per topic basis
- #154 - Support for min_bytes and max_wait_time on messages consuming
- 💎 #160 - Reorganize settings to better resemble ruby-kafka requirements
- 🔧 #164 - If we decide to have configuration per topic, topic uniqueness should be removed
- #165 - Router validator
- #166 - Params and route reorganization (new API)
- 🚚 #167 - Remove Sidekiq UI from Karafka
- #168 - Introduce unique IDs of routes
- 📇 #171 - Add kafka message metadata to params
- #176 - Transform Karafka::Connection::Consumer into a module
- #177 - Monitor not reacting when kafka killed with -9
- #175 - Allow single consumer to subscribe to multiple topics
- 🚚 #178 - Remove parsing failover when cannot unparse data
- #174 - Extended config validation
- 📜
#180 - Switch from JSON parser to yajl-ruby - 👻 #181 - When responder is defined and not used due to
respond_with
not being triggered in the perform, it won't raise an exception. - #188 - Rename name in config to client id
- #186 - Support ruby-kafka
ssl_ca_cert_file_path
config - #189 - karafka console does not preserve history on exit
- 💎 #191 - Karafka 0.6.0rc1 does not work with jruby / now it does :-)
- 📜 Switch to multi json so everyone can use their favourite JSON parser
- ➕ Added jruby support in general and in Travis
- #196 - Topic mapper does not map topics when subscribing thanks to @webandtech
- #96 - Karafka server - possibility to run it only for a certain topics
- ⏪
karafka worker cli option is removed (please use sidekiq directly)- restored, bad idea - (optional) pausing upon processing failures
pause_timeout
- Karafka console main process no longer intercepts irb errors
- ⚡️ Wiki updates
- #204 - Long running controllers
- 👍 Better internal API to handle multiple usage cases using
Karafka::Controllers::Includer
- #207 - Rename before_enqueued to after_received
- #147 - De-attach Karafka from Sidekiq by extracting Sidekiq backend
🆕 New features and improvements
- batch processing thanks to
#batch_consuming
flag and#params_batch
on controllers #topic
method on an controller instance to make a clear distinction in between params and route details- 🔄 Changed routing model (still compatible with 0.5) to allow better resources management
- Lower memory requirements due to object creation limitation (2-3 times less objects on each new message)
- Introduced the
#batch_consuming
config flag (config for #126) that can be set per each consumer_group - ➕ Added support for partition, offset and partition key in the params hash
name
option in config renamed toclient_id
- 0️⃣ Long running controllers with
persistent
flag on a topic config level, to make controller instances persistent between messages batches (single controller instance per topic per partition no per messages batch) - turned on by default
Incompatibilities
- 0️⃣ Default boot file is renamed from app.rb to karafka.rb
- ✂ Removed worker glass as dependency (now and independent gem)
- 👀
kafka.hosts
option renamed tokafka.seed_brokers
- you don't need to provide all the hosts to work with Kafka start_from_beginning
moved into kafka scope (kafka.start_from_beginning
)- Router no longer checks for route uniqueness - now you can define same routes for multiple kafkas and do a lot of crazy stuff, so it's your responsibility to check uniqueness
- ⬆️ Change in the way we identify topics in between Karafka and Sidekiq workers. If you upgrade, please make sure, all the jobs scheduled in Sidekiq are finished before the upgrade.
batch_mode
renamed tobatch_fetching
- 💎 Renamed content to value to better resemble ruby-kafka internal messages naming convention
- 👻 When having a responder with
required
topics and not using#respond_with
at all, it will raise an exception - Renamed
inline_mode
toinline_processing
to resemble other settings conventions - 📇 Renamed
inline_processing
tobackend
to reach 1.0 future compatibility - Single controller needs to be used for a single topic consumption
- Renamed
before_enqueue
toafter_received
to better resemble internal logic, since for inline backend, there is no enqueue. - 👷 Due to the level on which topic and controller are related (class level), the dynamic worker selection is no longer available.
- 📇 Renamed params #retrieve to params #retrieve! to better reflect what it does
Other changes
- 💅 PolishGeeksDevTools removed (in favour of Coditsu)
- 👍 Waaaaaay better code quality thanks to switching from dev tools to Coditsu
- Gem bump
- Cleaner internal API
- SRP
- 👍 Better settings proxying and management between ruby-kafka and karafka
- All internal validations are now powered by dry-validation
- 👍 Better naming conventions to reflect Kafka reality
- ✂ Removed Karafka::Connection::Message in favour of direct message details extraction from Kafka::FetchedMessage
-
v0.5.0 Changes
- ✂ Removed Zookeeper totally as dependency
- 👍 Better group and partition rebalancing
- Automatic thread management (no need for tunning) - each topic is a separate actor/thread
- 🚚 Moved from Poseidon into Ruby-Kafka
- No more max_concurrency setting
- After you define your App class and routes (and everything else) you need to add execute App.boot!
- Manual consuming is no longer available (no more karafka consume command)
- Karafka topics CLI is no longer available. No Zookeeper - no global topic discovery
- ⬇️ Dropped ZK as dependency
- 🖨 karafka info command no longer prints details about Zookeeper
- 👍 Better shutdown
- No more autodiscovery via Zookeeper - instead, the whole cluster will be discovered directly from Kafka
- 👍 No more support for Kafka 0.8
- 👌 Support for Kafka 0.9
- No more need for ActorCluster, since now we have a single thread (and Kafka connection) per topic
- 💎 Ruby 2.2.* support dropped
- Using App name as a Kafka client_id
- Automatic Capistrano integration
- 👀 Responders support for handling better responses pipelining and better responses flow description and design (see README for more details)
- Gem bump
- ⚡️ Readme updates
- 🖨 karafka flow CLI command for printing the application flow
- 🔨 Some internal refactorings
-
v0.5.0.3 Changes
August 02, 2017- #132 - When Kafka is gone, should reconnect after a time period
- 💎 #136 - new ruby-kafka version + other gem bumps
- ⚡️ ruby-kafka update
- 👍 #135 - NonMatchingRouteError - better error description in the code
- 🚚 #140 - Move Capistrano Karafka to a different specific gem
- 🏗 #110 - Add call method on a responder class to alias instance build and call
- #76 - Configs validator
- 👷 #138 - Possibility to have no worker class defined if inline_mode is being used
- #145 - Topic Mapper
- ⚡️ Ruby update to 2.4.1
- Gem bump x2
- ⚡️ #158 - Update docs section on heroku usage
- #150 - Add support for start_from_beginning on a per topic basis
- #148 - Lower Karafka Sidekiq dependency
- 👍 Allow karafka root to be specified from ENV
- 🚀 Handle SIGTERM as a shutdown command for kafka server to support Heroku deployment
-
v0.5.0.2 Changes
- ⚡️ Gems update x3
- 0️⃣ Default Ruby set to 2.3.3
- 0️⃣
Default Ruby set to 2.4.0 - ⚡️ Readme updates to match bug fixes and resolved issues
- #95 - Allow options into responder
- 📜 #98 - Use parser when responding on a topic
- 🔧 #114 - Option to configure waterdrop connection pool timeout and concurrency
- #118 - Added dot in topic validation format
- 👍 #119 - add support for authentication using SSL
- 0️⃣ #121 - JSON as a default for standalone responders usage
- #122 - Allow on capistrano role customization
- 👍 #125 - Add support to batch incoming messages
- #130 - start_from_beginning flag on routes and default
- #128 - Monitor caller_label not working with super on inheritance
- Renamed inline to inline_mode to stay consistent with flags that change the way karafka works (#125)
- 🔧 Dry-configurable bump to 0.5 with fixed proc value evaluation on retrieve patch (internal change)
-
v0.5.0.1 Changes
- 🛠 Fixed inconsistency in responders non-required topic definition. Now only required: false available
- #101 - Responders fail when multiple_usage true and required false
- 🛠 fix error on startup from waterdrop #102
- Waterdrop 0.3.2.1 with kafka.hosts instead of kafka_hosts
- #105 - Karafka::Monitor#caller_label not working with inherited monitors
- #99 - Standalone mode (without Sidekiq)
- #97 - Buffer responders single topics before send (pre-validation)
- 👍 Better control over consumer thanks to additional config options
- 👷 #111 - Dynamic worker assignment based on the income params
- Long shutdown time fix
-
v0.4.2 Changes
- 🚅 #87 - Re-consume mode with crone for better Rails/Rack integration
- 🚚 Moved Karafka server related stuff into separate Karafka::Server class
- 📇 Renamed Karafka::Runner into Karafka::Fetcher
- Gem bump
- ➕ Added chroot option to Zookeeper options
- 🚚 Moved BROKERS_PATH into config from constant
- ➕ Added Karafka consume CLI action for a short running single consumption round
- 🛠 Small fixes to close broken connections
- ⚡️ Readme updates
-
v0.4.1 Changes
- 🚅 Explicit throw(:abort) required to halt before_enqueue (like in Rails 5)
- #61 - autodiscovery of Kafka brokers based on Zookeeper data
- #63 - Graceful shutdown with current offset state during data processing
- #65 - Example of NewRelic monitor is outdated
- #71 - Setup should be executed after user code is loaded
- Gem bump x3
- Rubocop remarks
- 🚚 worker_timeout config option has been removed. It now needs to be defined manually by the framework user because WorkerGlass::Timeout can be disabled and we cannot use Karafka settings on a class level to initialize user code stuff
- 🚚 Moved setup logic under setup/Setup namespace
- 👍 Better defaults handling
- #75 - Kafka and Zookeeper options as a hash
- #82 - Karafka autodiscovery fails upon caching of configs
- 🔧 #81 - Switch config management to dry configurable
- 🔖 Version fix
- ⬇️ Dropped support for Ruby 2.1.*
- 💎 Ruby bump to 2.3.1
-
v0.4.0 Changes
- ➕ Added WaterDrop gem with default configuration
- 🔨 Refactoring of config logic to simplify adding new dependencies that need to be configured based on #setup data
- Gem bump
- ⚡️ Readme updates
- 📇 Renamed cluster to actor_cluster for method names
- 👷 Replaced SidekiqGlass with generic WorkerGlass lib
- Application bootstrap in app.rb no longer required
- ⚡️ Karafka.boot needs to be executed after all the application files are loaded (template updated)
- 🔨 Small loader refactor (no API changes)
- 0️⃣ Ruby 2.3.0 support (default)
- No more rake tasks
- Karafka CLI instead of rake tasks
- 👷 Worker cli command allows passing additional options directly to Sidekiq
- 📇 Renamed concurrency to max_concurrency - it describes better what happens - Karafka will use this number of threads only when required
- ➕ Added wait_timeout that allows us to tune how long should we wait on a single socket connection (single topic) for new messages before going to next one (this applies to each thread separately)
- Rubocop remarks
- ✂ Removed Sinatra and Puma dependencies
- Karafka Cli internal reorganization
- Karafka Cli routes task
- 📜 #37 - warn log for failed parsing of a message
- #43 - wrong constant name
- #44 - Method name conflict
- #48 - Cannot load such file -- celluloid/current
- #46 - Loading application
- #45 - Set up monitor in config
- #47 - rake karafka:run uses app.rb only
- ⚡️ #53 - README update with Sinatra/Rails integration description
- #41 - New Routing engine
- 🚚 #54 - Move Karafka::Workers::BaseWorker to Karafka::BaseWorker
- 👷 #55 - ApplicationController and ApplicationWorker
-
v0.3.2 Changes
- 🔀 Karafka::Params::Params lazy load merge keys with string/symbol names priorities fix
-
v0.3.1 Changes
- 📇 Renamed Karafka::Monitor to Karafka::Process to represent a Karafka process wrapper
- ➕ Added Karafka::Monitoring that allows to add custom logging and monitoring with external libraries and systems
- 🚚 Moved logging functionality into Karafka::Monitoring default monitoring
- ➕ Added possibility to provide own monitoring as long as in responds to #notice and #notice_error
- 🔊 Standardized logging format for all logs