karafka 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/.console_irbrc +13 -0
  3. data/.github/ISSUE_TEMPLATE.md +2 -0
  4. data/.gitignore +68 -0
  5. data/.rspec +1 -0
  6. data/.ruby-gemset +1 -0
  7. data/.ruby-version +1 -0
  8. data/.travis.yml +17 -0
  9. data/CHANGELOG.md +371 -0
  10. data/CODE_OF_CONDUCT.md +46 -0
  11. data/CONTRIBUTING.md +42 -0
  12. data/Gemfile +12 -0
  13. data/Gemfile.lock +111 -0
  14. data/MIT-LICENCE +18 -0
  15. data/README.md +95 -0
  16. data/bin/karafka +19 -0
  17. data/config/errors.yml +6 -0
  18. data/karafka.gemspec +35 -0
  19. data/lib/karafka.rb +68 -0
  20. data/lib/karafka/app.rb +52 -0
  21. data/lib/karafka/attributes_map.rb +67 -0
  22. data/lib/karafka/backends/inline.rb +17 -0
  23. data/lib/karafka/base_controller.rb +60 -0
  24. data/lib/karafka/base_responder.rb +185 -0
  25. data/lib/karafka/cli.rb +54 -0
  26. data/lib/karafka/cli/base.rb +78 -0
  27. data/lib/karafka/cli/console.rb +29 -0
  28. data/lib/karafka/cli/flow.rb +46 -0
  29. data/lib/karafka/cli/info.rb +29 -0
  30. data/lib/karafka/cli/install.rb +43 -0
  31. data/lib/karafka/cli/server.rb +67 -0
  32. data/lib/karafka/connection/config_adapter.rb +112 -0
  33. data/lib/karafka/connection/consumer.rb +121 -0
  34. data/lib/karafka/connection/listener.rb +51 -0
  35. data/lib/karafka/connection/processor.rb +61 -0
  36. data/lib/karafka/controllers/callbacks.rb +54 -0
  37. data/lib/karafka/controllers/includer.rb +51 -0
  38. data/lib/karafka/controllers/responders.rb +19 -0
  39. data/lib/karafka/controllers/single_params.rb +15 -0
  40. data/lib/karafka/errors.rb +43 -0
  41. data/lib/karafka/fetcher.rb +48 -0
  42. data/lib/karafka/helpers/class_matcher.rb +78 -0
  43. data/lib/karafka/helpers/config_retriever.rb +46 -0
  44. data/lib/karafka/helpers/multi_delegator.rb +33 -0
  45. data/lib/karafka/loader.rb +29 -0
  46. data/lib/karafka/logger.rb +53 -0
  47. data/lib/karafka/monitor.rb +98 -0
  48. data/lib/karafka/params/params.rb +128 -0
  49. data/lib/karafka/params/params_batch.rb +41 -0
  50. data/lib/karafka/parsers/json.rb +38 -0
  51. data/lib/karafka/patches/dry_configurable.rb +31 -0
  52. data/lib/karafka/patches/ruby_kafka.rb +34 -0
  53. data/lib/karafka/persistence/consumer.rb +25 -0
  54. data/lib/karafka/persistence/controller.rb +38 -0
  55. data/lib/karafka/process.rb +63 -0
  56. data/lib/karafka/responders/builder.rb +35 -0
  57. data/lib/karafka/responders/topic.rb +57 -0
  58. data/lib/karafka/routing/builder.rb +61 -0
  59. data/lib/karafka/routing/consumer_group.rb +61 -0
  60. data/lib/karafka/routing/consumer_mapper.rb +33 -0
  61. data/lib/karafka/routing/proxy.rb +37 -0
  62. data/lib/karafka/routing/router.rb +29 -0
  63. data/lib/karafka/routing/topic.rb +66 -0
  64. data/lib/karafka/routing/topic_mapper.rb +55 -0
  65. data/lib/karafka/schemas/config.rb +21 -0
  66. data/lib/karafka/schemas/consumer_group.rb +65 -0
  67. data/lib/karafka/schemas/consumer_group_topic.rb +18 -0
  68. data/lib/karafka/schemas/responder_usage.rb +39 -0
  69. data/lib/karafka/schemas/server_cli_options.rb +43 -0
  70. data/lib/karafka/server.rb +62 -0
  71. data/lib/karafka/setup/config.rb +163 -0
  72. data/lib/karafka/setup/configurators/base.rb +35 -0
  73. data/lib/karafka/setup/configurators/water_drop.rb +29 -0
  74. data/lib/karafka/status.rb +25 -0
  75. data/lib/karafka/templates/application_controller.rb.example +7 -0
  76. data/lib/karafka/templates/application_responder.rb.example +11 -0
  77. data/lib/karafka/templates/karafka.rb.example +41 -0
  78. data/lib/karafka/version.rb +7 -0
  79. data/log/.gitkeep +0 -0
  80. metadata +267 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 26ee2938706de62609da9faf4179b3071fdc9e62
4
+ data.tar.gz: eedc149b1ade99a21d82f32ad3ec9009b065cc89
5
+ SHA512:
6
+ metadata.gz: 2e25b2453563d9330955248307eee910147899fefb15bc197313f79012c132f0970fede7f0a0fd50b6966267c9d7d48f82f50b75fea927baa8c01bf68ebee305
7
+ data.tar.gz: 902fd68ad24eb5400976d9f6b3cc5d955617a70e0b14186e2b27e8292fcff2d59aa013231834ad679c9694eebd6809589cf98715151d89a1637d6e71e2f5a14e
@@ -0,0 +1,13 @@
1
+ # irbrc for Karafka console
2
+ require 'karafka'
3
+ require Karafka.boot_file
4
+
5
+ IRB.conf[:AUTO_INDENT] = true
6
+ IRB.conf[:SAVE_HISTORY] = 1000
7
+ IRB.conf[:USE_READLINE] = true
8
+ IRB.conf[:HISTORY_FILE] = "#{Karafka::App.root}/.irb-history"
9
+ IRB.conf[:LOAD_MODULES] = [] unless IRB.conf.key?(:LOAD_MODULES)
10
+
11
+ unless IRB.conf[:LOAD_MODULES].include?('irb/completion')
12
+ IRB.conf[:LOAD_MODULES] << 'irb/completion'
13
+ end
@@ -0,0 +1,2 @@
1
+ <!-- Love karafka? Please consider supporting our collective:
2
+ 👉 https://opencollective.com/karafka/donate -->
@@ -0,0 +1,68 @@
1
+ # bundler state
2
+ /.bundle
3
+ /vendor/bundle/
4
+ /vendor/ruby/
5
+ /ruby/
6
+ app.god
7
+
8
+ # minimal Rails specific artifacts
9
+ db/*.sqlite3
10
+ /log/development.log
11
+ /log/production.log
12
+ /log/test.log
13
+ /tmp/*
14
+ *.gem
15
+ *.~
16
+
17
+ # various artifacts
18
+ **.war
19
+ *.rbc
20
+ *.sassc
21
+ .byebug_history
22
+ .redcar/
23
+ .capistrano/
24
+ .sass-cache
25
+ /config/god/sidekiq.rb
26
+ /config/puma.rb
27
+ /coverage.data
28
+ /coverage/
29
+ /doc/api/
30
+ /doc/app/
31
+ /doc/yard
32
+ /doc/features.html
33
+ /doc/specs.html
34
+ /spec/tmp/*
35
+ /cache
36
+ /capybara*
37
+ /capybara-*.html
38
+ /gems
39
+ /specifications
40
+ rerun.txt
41
+ pickle-email-*.html
42
+
43
+ # If you find yourself ignoring temporary files generated by your text editor
44
+ # or operating system, you probably want to add a global ignore instead:
45
+ # git config --global core.excludesfile ~/.gitignore_global
46
+ #
47
+ # Here are some files you may want to ignore globally:
48
+
49
+ # scm revert files
50
+ **.orig
51
+
52
+ # Mac finder artifacts
53
+ .DS_Store
54
+
55
+ # Netbeans project directory
56
+ /nbproject
57
+
58
+ # RubyMine project files
59
+ .idea
60
+
61
+ # Textmate project files
62
+ /*.tmproj
63
+
64
+ # vim artifacts
65
+ **.swp
66
+
67
+ # documentation
68
+ .yardoc
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
@@ -0,0 +1 @@
1
+ karafka
@@ -0,0 +1 @@
1
+ 2.4.2
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ sudo: false
3
+ rvm:
4
+ - 2.3.0
5
+ - 2.3.1
6
+ - 2.3.2
7
+ - 2.3.3
8
+ - 2.3.4
9
+ - 2.4.0
10
+ - 2.4.1
11
+ - 2.4.2
12
+ - jruby-head
13
+ script: bundle exec rspec spec/
14
+ env:
15
+ global:
16
+ - JRUBY_OPTS='--debug'
17
+ install: bundle install --jobs=3 --retry=3
@@ -0,0 +1,371 @@
1
+ # Karafka framework changelog
2
+
3
+ ## 1.1.0 Unreleased
4
+ - Gem bump
5
+ - Switch from Celluloid to native Thread management
6
+ - Improved shutdown process
7
+ - Introduced optional fetch callbacks and moved current the ```after_received``` there as well
8
+ - Karafka will raise Errors::InvalidPauseTimeout exception when trying to pause but timeout set to 0
9
+ - Allow float for timeouts and other time based second settings
10
+ - Renamed MessagesProcessor to Processor and MessagesConsumer to Consumer - we don't process and don't consumer anything else so it was pointless to keep this "namespace"
11
+ - #232 - Remove unused ActiveSupport require
12
+ - #214 - Expose consumer on a controller layer
13
+ - #193 - Process shutdown callbacks
14
+ - Fixed accessibility of ```#params_batch``` from the outside of the controller
15
+ - connection_pool config options are no longer required
16
+ - celluloid config options are no longer required
17
+ - ```#perform``` is not renamed to ```#consume``` with warning level on using the old one (deprecated)
18
+ - #235 - Rename perform to consume
19
+ - Upgrade to ruby-kafka 0.5
20
+ - Due to redesign of Waterdrop concurrency setting is no longer needed
21
+ - #236 - Manual offset management
22
+ - WaterDrop 1.0.0 support with async
23
+ - Renamed ```batch_consuming``` option to ```batch_fetching``` as it is not a consumption (with processing) but a process of fetching messages from Kafka. The messages is considered consumed, when it is processed.
24
+ - Renamed ```batch_processing``` to ```batch_consuming``` to resemble Kafka concept of consuming messages.
25
+ - Renamed ```after_received``` to ```after_fetched``` to normalize the naming conventions.
26
+
27
+ ## 1.0.1
28
+ - #210 - LoadError: cannot load such file -- [...]/karafka.rb
29
+ - Ruby 2.4.2 as a default (+travis integration)
30
+ - JRuby upgrade
31
+ - Expanded persistence layer (moved to a namespace for easier future development)
32
+ - #213 - Misleading error when non-existing dependency is required
33
+ - #212 - Make params react to #topic, #partition, #offset
34
+ - #215 - Consumer group route dynamic options are ignored
35
+ - #217 - check RUBY_ENGINE constant if RUBY_VERSION is missing (#217)
36
+ - #218 - add configuration setting to control Celluloid's shutdown timeout
37
+ - Renamed Karafka::Routing::Mapper to Karafka::Routing::TopicMapper to match naming conventions
38
+ - #219 - Allow explicit consumer group names, without prefixes
39
+ - Fix to early removed pid upon shutdown of demonized process
40
+ - max_wait_time updated to match https://github.com/zendesk/ruby-kafka/issues/433
41
+ - #230 - Better uri validation for seed brokers (incompatibility as the kafka:// or kafka+ssl:// is required)
42
+ - Small internal docs fixes
43
+ - Dry::Validation::MissingMessageError: message for broker_schema? was not found
44
+ - #238 - warning: already initialized constant Karafka::Schemas::URI_SCHEMES
45
+
46
+ ## 1.0.0
47
+
48
+ ### Closed issues:
49
+
50
+ - #103 - Env for logger is loaded 2 early (on gem load not on app init)
51
+ - #142 - Possibility to better control Kafka consumers (consumer groups management)
52
+ - #150 - Add support for start_from_beginning on a per topic basis
53
+ - #154 - Support for min_bytes and max_wait_time on messages consuming
54
+ - #160 - Reorganize settings to better resemble ruby-kafka requirements
55
+ - #164 - If we decide to have configuration per topic, topic uniqueness should be removed
56
+ - #165 - Router validator
57
+ - #166 - Params and route reorganization (new API)
58
+ - #167 - Remove Sidekiq UI from Karafka
59
+ - #168 - Introduce unique IDs of routes
60
+ - #171 - Add kafka message metadata to params
61
+ - #176 - Transform Karafka::Connection::Consumer into a module
62
+ - #177 - Monitor not reacting when kafka killed with -9
63
+ - #175 - Allow single consumer to subscribe to multiple topics
64
+ - #178 - Remove parsing failover when cannot unparse data
65
+ - #174 - Extended config validation
66
+ - ~~#180 - Switch from JSON parser to yajl-ruby~~
67
+ - #181 - When responder is defined and not used due to ```respond_with``` not being triggered in the perform, it won't raise an exception.
68
+ - #188 - Rename name in config to client id
69
+ - #186 - Support ruby-kafka ```ssl_ca_cert_file_path``` config
70
+ - #189 - karafka console does not preserve history on exit
71
+ - #191 - Karafka 0.6.0rc1 does not work with jruby / now it does :-)
72
+ - Switch to multi json so everyone can use their favourite JSON parser
73
+ - Added jruby support in general and in Travis
74
+ - #196 - Topic mapper does not map topics when subscribing thanks to @webandtech
75
+ - #96 - Karafka server - possiblity to run it only for a certain topics
76
+ - ~~karafka worker cli option is removed (please use sidekiq directly)~~ - restored, bad idea
77
+ - (optional) pausing upon processing failures ```pause_timeout```
78
+ - Karafka console main process no longer intercepts irb errors
79
+ - Wiki updates
80
+ - #204 - Long running controllers
81
+ - Better internal API to handle multiple usage cases using ```Karafka::Controllers::Includer```
82
+ - #207 - Rename before_enqueued to after_received
83
+ - #147 - Deattach Karafka from Sidekiq by extracting Sidekiq backend
84
+
85
+ ### New features and improvements
86
+
87
+ - batch processing thanks to ```#batch_consuming``` flag and ```#params_batch``` on controllers
88
+ - ```#topic``` method on an controller instance to make a clear distinction in between params and route details
89
+ - Changed routing model (still compatible with 0.5) to allow better resources management
90
+ - Lower memory requirements due to object creation limitation (2-3 times less objects on each new message)
91
+ - Introduced the ```#batch_consuming``` config flag (config for #126) that can be set per each consumer_group
92
+ - Added support for partition, offset and partition key in the params hash
93
+ - ```name``` option in config renamed to ```client_id```
94
+ - 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
95
+
96
+ ### Incompatibilities
97
+
98
+ - Default boot file is renamed from app.rb to karafka.rb
99
+ - Removed worker glass as dependency (now and independent gem)
100
+ - ```kafka.hosts``` option renamed to ```kafka.seed_brokers``` - you don't need to provide all the hosts to work with Kafka
101
+ - ```start_from_beginning``` moved into kafka scope (```kafka.start_from_beginning```)
102
+ - 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
103
+ - 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.
104
+ - ```batch_mode``` renamed to ```batch_fetching```
105
+ - Renamed content to value to better resemble ruby-kafka internal messages naming convention
106
+ - When having a responder with ```required``` topics and not using ```#respond_with``` at all, it will raise an exception
107
+ - Renamed ```inline_mode``` to ```inline_processing``` to resemble other settings conventions
108
+ - Renamed ```inline_processing``` to ```backend``` to reach 1.0 future compatibility
109
+ - Single controller **needs** to be used for a single topic consumption
110
+ - Renamed ```before_enqueue``` to ```after_received``` to better resemble internal logic, since for inline backend, there is no enqueue.
111
+ - Due to the level on which topic and controller are related (class level), the dynamic worker selection is no longer available.
112
+ - Renamed params #retrieve to params #retrieve! to better reflect what it does
113
+
114
+ ### Other changes
115
+ - PolishGeeksDevTools removed (in favour of Coditsu)
116
+ - Waaaaaay better code quality thanks to switching from dev tools to Coditsu
117
+ - Gem bump
118
+ - Cleaner internal API
119
+ - SRP
120
+ - Better settings proxying and management between ruby-kafka and karafka
121
+ - All internal validations are now powered by dry-validation
122
+ - Better naming conventions to reflect Kafka reality
123
+ - Removed Karafka::Connection::Message in favour of direct message details extraction from Kafka::FetchedMessage
124
+
125
+ ## 0.5.0.3
126
+ - #132 - When Kafka is gone, should reconnect after a time period
127
+ - #136 - new ruby-kafka version + other gem bumps
128
+ - ruby-kafka update
129
+ - #135 - NonMatchingRouteError - better error description in the code
130
+ - #140 - Move Capistrano Karafka to a different specific gem
131
+ - #110 - Add call method on a responder class to alias instance build and call
132
+ - #76 - Configs validator
133
+ - #138 - Possibility to have no worker class defined if inline_mode is being used
134
+ - #145 - Topic Mapper
135
+ - Ruby update to 2.4.1
136
+ - Gem bump x2
137
+ - #158 - Update docs section on heroku usage
138
+ - #150 - Add support for start_from_beginning on a per topic basis
139
+ - #148 - Lower Karafka Sidekiq dependency
140
+ - Allow karafka root to be specified from ENV
141
+ - Handle SIGTERM as a shutdown command for kafka server to support Heroku deployment
142
+
143
+ ## 0.5.0.2
144
+ - Gems update x3
145
+ - Default Ruby set to 2.3.3
146
+ - ~~Default Ruby set to 2.4.0~~
147
+ - Readme updates to match bug fixes and resolved issues
148
+ - #95 - Allow options into responder
149
+ - #98 - Use parser when responding on a topic
150
+ - #114 - Option to configure waterdrop connection pool timeout and concurrency
151
+ - #118 - Added dot in topic validation format
152
+ - #119 - add support for authentication using SSL
153
+ - #121 - JSON as a default for standalone responders usage
154
+ - #122 - Allow on capistrano role customization
155
+ - #125 - Add support to batch incoming messages
156
+ - #130 - start_from_beginning flag on routes and default
157
+ - #128 - Monitor caller_label not working with super on inheritance
158
+ - Renamed *inline* to *inline_mode* to stay consistent with flags that change the way karafka works (#125)
159
+ - Dry-configurable bump to 0.5 with fixed proc value evaluation on retrieve patch (internal change)
160
+
161
+ ## 0.5.0.1
162
+ - Fixed inconsistency in responders non-required topic definition. Now only required: false available
163
+ - #101 - Responders fail when multiple_usage true and required false
164
+ - fix error on startup from waterdrop #102
165
+ - Waterdrop 0.3.2.1 with kafka.hosts instead of kafka_hosts
166
+ - #105 - Karafka::Monitor#caller_label not working with inherited monitors
167
+ - #99 - Standalone mode (without Sidekiq)
168
+ - #97 - Buffer responders single topics before send (prevalidation)
169
+ - Better control over consumer thanks to additional config options
170
+ - #111 - Dynamic worker assignment based on the income params
171
+ - Long shutdown time fix
172
+
173
+ ## 0.5.0
174
+ - Removed Zookeeper totally as dependency
175
+ - Better group and partition rebalancing
176
+ - Automatic thread management (no need for tunning) - each topic is a separate actor/thread
177
+ - Moved from Poseidon into Ruby-Kafka
178
+ - No more max_concurrency setting
179
+ - After you define your App class and routes (and everything else) you need to add execute App.boot!
180
+ - Manual consuming is no longer available (no more karafka consume command)
181
+ - Karafka topics CLI is no longer available. No Zookeeper - no global topic discovery
182
+ - Dropped ZK as dependency
183
+ - karafka info command no longer prints details about Zookeeper
184
+ - Better shutdown
185
+ - No more autodiscovery via Zookeeper - instead, the whole cluster will be discovered directly from Kafka
186
+ - No more support for Kafka 0.8
187
+ - Support for Kafka 0.9
188
+ - No more need for ActorCluster, since now we have a single thread (and Kafka connection) per topic
189
+ - Ruby 2.2.* support dropped
190
+ - Using App name as a Kafka client_id
191
+ - Automatic Capistrano integration
192
+ - Responders support for handling better responses pipelining and better responses flow description and design (see README for more details)
193
+ - Gem bump
194
+ - Readme updates
195
+ - karafka flow CLI command for printing the application flow
196
+ - Some internal refactorings
197
+
198
+ ## 0.4.2
199
+ - #87 - Reconsume mode with crone for better Rails/Rack integration
200
+ - Moved Karafka server related stuff into separate Karafka::Server class
201
+ - Renamed Karafka::Runner into Karafka::Fetcher
202
+ - Gem bump
203
+ - Added chroot option to Zookeeper options
204
+ - Moved BROKERS_PATH into config from constant
205
+ - Added Karafka consume CLI action for a short running single consumption round
206
+ - Small fixes to close broken connections
207
+ - Readme updates
208
+
209
+ ## 0.4.1
210
+ - Explicit throw(:abort) required to halt before_enqueue (like in Rails 5)
211
+ - #61 - Autodiscover Kafka brokers based on Zookeeper data
212
+ - #63 - Graceful shutdown with current offset state during data processing
213
+ - #65 - Example of NewRelic monitor is outdated
214
+ - #71 - Setup should be executed after user code is loaded
215
+ - Gem bump x3
216
+ - Rubocop remarks
217
+ - 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
218
+ - Moved setup logic under setup/Setup namespace
219
+ - Better defaults handling
220
+ - #75 - Kafka and Zookeeper options as a hash
221
+ - #82 - Karafka autodiscovery fails upon caching of configs
222
+ - #81 - Switch config management to dry configurable
223
+ - Version fix
224
+ - Dropped support for Ruby 2.1.*
225
+ - Ruby bump to 2.3.1
226
+
227
+ ## 0.4.0
228
+ - Added WaterDrop gem with default configuration
229
+ - Refactoring of config logic to simplify adding new dependencies that need to be configured based on #setup data
230
+ - Gem bump
231
+ - Readme updates
232
+ - Renamed cluster to actor_cluster for method names
233
+ - Replaced SidekiqGlass with generic WorkerGlass lib
234
+ - Application bootstrap in app.rb no longer required
235
+ - Karafka.boot needs to be executed after all the application files are loaded (template updated)
236
+ - Small loader refactor (no API changes)
237
+ - Ruby 2.3.0 support (default)
238
+ - No more rake tasks
239
+ - Karafka CLI instead of rake tasks
240
+ - Worker cli command allows passing additional options directly to Sidekiq
241
+ - Renamed concurrency to max_concurrency - it describes better what happens - Karafka will use this number of threads only when required
242
+ - 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)
243
+ - Rubocop remarks
244
+ - Removed Sinatra and Puma dependencies
245
+ - Karafka Cli internal reorganization
246
+ - Karafka Cli routes task
247
+ - #37 - warn log for failed parsing of a message
248
+ - #43 - wrong constant name
249
+ - #44 - Method name conflict
250
+ - #48 - Cannot load such file -- celluloid/current
251
+ - #46 - Loading application
252
+ - #45 - Set up monitor in config
253
+ - #47 - rake karafka:run uses app.rb only
254
+ - #53 - README update with Sinatra/Rails integration description
255
+ - #41 - New Routing engine
256
+ - #54 - Move Karafka::Workers::BaseWorker to Karafka::BaseWorker
257
+ - #55 - ApplicationController and ApplicationWorker
258
+
259
+ ## 0.3.2
260
+ - Karafka::Params::Params lazy load merge keys with string/symbol names priorities fix
261
+
262
+ ## 0.3.1
263
+ - Renamed Karafka::Monitor to Karafka::Process to represent a Karafka process wrapper
264
+ - Added Karafka::Monitoring that allows to add custom logging and monitoring with external libraries and systems
265
+ - Moved logging functionality into Karafka::Monitoring default monitoring
266
+ - Added possibility to provide own monitoring as long as in responds to #notice and #notice_error
267
+ - Standarized logging format for all logs
268
+
269
+ ## 0.3.0
270
+ - Switched from custom ParserError for each parser to general catching of Karafka::Errors::ParseError and its descendants
271
+ - Gem bump
272
+ - Fixed #32 - now when using custom workers that does not inherit from Karafka::BaseWorker perform method is not required. Using custom workers means that the logic that would normally lie under #perform, needs to be executed directly from the worker.
273
+ - Fixed #31 - Technically didn't fix because this is how Sidekiq is meant to work, but provided possibility to assign custom interchangers that allow to bypass JSON encoding issues by converting data that goes to Redis to a required format (and parsing it back when it is fetched)
274
+ - Added full parameters lazy load - content is no longer loaded during #perform_async if params are not used in before_enqueue
275
+ - No more namespaces for Redis by default (use separate DBs)
276
+
277
+ ## 0.1.21
278
+ - Sidekiq 4.0.1 bump
279
+ - Gem bump
280
+ - Added direct celluloid requirement to Karafka (removed from Sidekiq)
281
+
282
+ ## 0.1.19
283
+ - Internal call - schedule naming change
284
+ - Enqueue to perform_async naming in controller to follow Sidekiqs naming convention
285
+ - Gem bump
286
+
287
+ ## 0.1.18
288
+ - Changed Redis configuration options into a single hash that is directly passed to Redis setup for Sidekiq
289
+ - Added config.ru to provide a Sidekiq web UI (see README for more details)
290
+
291
+ ## 0.1.17
292
+ - Changed Karafka::Connection::Cluster tp Karafka::Connection::ActorCluster to distinguish between a single thread actor cluster for multiple topic connection and a future feature that will allow process clusterization.
293
+ - Add an ability to use user-defined parsers for a messages
294
+ - Lazy load params for before callbacks
295
+ - Automatic loading/initializng all workers classes during startup (so Sidekiq won't fail with unknown workers exception)
296
+ - Params are now private to controller
297
+ - Added bootstrap method to app.rb
298
+
299
+ ## 0.1.16
300
+ - Cluster level error catching for all exceptions so actor is not killer
301
+ - Cluster level error logging
302
+ - Listener refactoring (QueueConsumer extracted)
303
+ - Karafka::Connection::QueueConsumer to wrap around fetching logic - technically we could replace Kafka with any other messaging engine as long as we preserve the same API
304
+ - Added debug env for debugging purpose in applications
305
+
306
+ ## 0.1.15
307
+ - Fixed max_wait_ms vs socket_timeout_ms issue
308
+ - Fixed closing queue connection after Poseidon::Errors::ProtocolError failure
309
+ - Fixed wrong logging file selection based on env
310
+ - Extracted Karafka::Connection::QueueConsumer object to wrap around queue connection
311
+
312
+ ## 0.1.14
313
+ - Rake tasks for listing all the topics on Kafka server (rake kafka:topics)
314
+
315
+ ## 0.1.13
316
+ - Ability to assign custom workers and use them bypassing Karafka::BaseWorker (or its descendants)
317
+ - Gem bump
318
+
319
+ ## 0.1.12
320
+ - All internal errors went to Karafka::Errors namespace
321
+
322
+ ## 0.1.11
323
+ - Rescuing all the "before Sidekiq" processing so errors won't affect other incoming messages
324
+ - Fixed dying actors after connection error
325
+ - Added a new app status - "initializing"
326
+ - Karafka::Status model cleanup
327
+
328
+ ## 0.1.10
329
+ - Added possibility to specify redis namespace in configuration (failover to app name)
330
+ - Renamed redis_host to redis_url in configuration
331
+
332
+ ## 0.1.9
333
+ - Added worker logger
334
+
335
+ ## 0.1.8
336
+ - Droped local env suppot in favour of [Envlogic](https://github.com/karafka/envlogic) - no changes in API
337
+
338
+ ## 0.1.7
339
+ - Karafka option for Redis hosts (not localhost only)
340
+
341
+ ## 0.1.6
342
+ - Added better concurency by clusterization of listeners
343
+ - Added graceful shutdown
344
+ - Added concurency that allows to handle bigger applications with celluloid
345
+ - Karafka controllers no longer require group to be defined (created based on the topic and app name)
346
+ - Karafka controllers no longer require topic to be defined (created based on the controller name)
347
+ - Readme updates
348
+
349
+ ## 0.1.5
350
+ - Celluloid support for listeners
351
+ - Multi target logging (STDOUT and file)
352
+
353
+ ## 0.1.4
354
+ - Renamed events to messages to follow Apache Kafka naming convention
355
+
356
+ ## 0.1.3
357
+ - Karafka::App.logger moved to Karafka.logger
358
+ - README updates (Usage section was added)
359
+
360
+ ## 0.1.2
361
+ - Logging to log/environment.log
362
+ - Karafka::Runner
363
+
364
+ ## 0.1.1
365
+ - README updates
366
+ - Raketasks updates
367
+ - Rake installation task
368
+ - Changelog file added
369
+
370
+ ## 0.1.0
371
+ - Initial framework code