flipp-ruby-kafka-temp-fork 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +97 -0
  3. data/.dockerignore +2 -0
  4. data/.gitignore +41 -0
  5. data/.gitmodules +0 -0
  6. data/.rspec +1 -0
  7. data/.rubocop.yml +56 -0
  8. data/.ruby-gemset +1 -0
  9. data/.ruby-version +1 -0
  10. data/CHANGELOG.md +466 -0
  11. data/Dockerfile +21 -0
  12. data/Gemfile +6 -0
  13. data/Gemfile.lock +207 -0
  14. data/Guardfile +22 -0
  15. data/README.md +102 -0
  16. data/Rakefile +13 -0
  17. data/bin/flipp_ruby_kafka +4 -0
  18. data/deploy/artifactory.sh +8 -0
  19. data/deploy/config.json +4 -0
  20. data/docker-compose.yml +89 -0
  21. data/docs/UPGRADE_1.0.md +39 -0
  22. data/flipp-ruby-kafka.gemspec +34 -0
  23. data/kafkateria/factories/my_schema.rb +16 -0
  24. data/kafkateria/factories/my_schema_with_id.rb +16 -0
  25. data/lib/flipp_ruby_kafka.rb +73 -0
  26. data/lib/flipp_ruby_kafka/flipp_datadog_metrics.rb +15 -0
  27. data/lib/flipp_ruby_kafka/test_helpers.rb +59 -0
  28. data/lib/flipp_ruby_kafka/utils/platform_schema_validation.rb +77 -0
  29. data/lib/flipp_ruby_kafka/utils/platform_topic_validation.rb +41 -0
  30. data/lib/flipp_ruby_kafka/version.rb +5 -0
  31. data/lib/generators/flipp_ruby_kafka/schema_validation/schema_validation_generator.rb +23 -0
  32. data/lib/generators/flipp_ruby_kafka/topic_validation/topic_validation_generator.rb +22 -0
  33. data/spec/flipp_ruby_kafka_spec.rb +8 -0
  34. data/spec/integration/send_kafka_spec.rb +63 -0
  35. data/spec/phobos.yml +73 -0
  36. data/spec/schemas/com/my-namespace/MySchema-key.avsc +13 -0
  37. data/spec/schemas/com/my-namespace/MySchema.avsc +18 -0
  38. data/spec/schemas/com/my-namespace/MySchemaWithDateTimes.avsc +33 -0
  39. data/spec/schemas/com/my-namespace/MySchemaWithId.avsc +28 -0
  40. data/spec/spec_helper.rb +39 -0
  41. data/spec/utils/platform_schema_validation_spec.rb +54 -0
  42. data/spec/utils/platform_topic_validation_spec.rb +50 -0
  43. metadata +262 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1d678755ab40d9ab99ad003a75be21d785e4d5e8c78cc1028bd93856dd534d49
4
+ data.tar.gz: ec7e3833b40568f8400594c198b41adc92f241eed8d4e964ad8971e9ab8b83c9
5
+ SHA512:
6
+ metadata.gz: ee2897cdc8062db671e488fd35391ec16eb43de95a4c6dcd5f3cba764396987cc3d34413670dd360d076dcbe1451332efc7fa68a4b696e64efb709537ed933f6
7
+ data.tar.gz: e2129786ccf077e509e51398ceb50b578596679c8c302285fe4268a64be2554a02f21740eaf7f0b799d9ab93f9823638ead5b4dc0848b63def6e5335f2255714
@@ -0,0 +1,97 @@
1
+ defaults: &defaults
2
+ parallelism: 1
3
+ working_directory: ~/workspace
4
+ docker:
5
+ - image: 421990735784.dkr.ecr.us-east-1.amazonaws.com/ci-build-environment:ruby-2.5
6
+ environment:
7
+ MYSQL_HOST: 127.0.01
8
+ PG_HOST: 127.0.0.1
9
+ - image: circleci/mysql:5.7
10
+ environment:
11
+ MYSQL_ALLOW_EMPTY_PASSWORD: true
12
+ MYSQL_DATABASE: test
13
+ - image: circleci/postgres:11-alpine-ram
14
+ environment:
15
+ POSTGRES_PASSWORD: root
16
+
17
+ version: 2
18
+ jobs:
19
+ build:
20
+ <<: *defaults
21
+ steps:
22
+ - checkout
23
+ - run:
24
+ name: Which bundler?
25
+ command: bundle -v
26
+ - run:
27
+ name: Install aws cli
28
+ command: sudo apt update && sudo apt-get install -y awscli
29
+ - run: aws s3 cp s3://flipp-platform-production/platform-param-decrypt/platform-param-decrypt_linux platform-param-decrypt_linux
30
+ - run: chmod +x platform-param-decrypt_linux
31
+ - run: mkdir vendor
32
+ - run: sudo chmod 1777 -R /home/circleci/.bundle /tmp
33
+ - run: ./platform-param-decrypt_linux -bundleConfig > ~/.bundle/config
34
+ - run: gem install bundler -v2.1 # 2.2.17 breaks https://github.com/rubygems/rubygems/issues/4581
35
+
36
+ # Restore bundle cache & npm cache
37
+ - restore_cache:
38
+ key: 'rails-{{ checksum "Gemfile.lock" }}'
39
+
40
+ # Bundle install dependencies in /tmp/
41
+ # so Dockerfile does not copy them since
42
+ # its base image is different than CircleCI
43
+ - run:
44
+ name: Bundle install
45
+ command: bundle install --path vendor/bundle --jobs=4 --retry=3
46
+
47
+ # Store bundle cache
48
+ - save_cache:
49
+ key: 'rails-{{ checksum "Gemfile.lock" }}'
50
+ paths:
51
+ - ~/workspace/vendor/bundle
52
+
53
+ - persist_to_workspace:
54
+ # Must be an absolute path, or relative path from working_directory
55
+ root: ~/workspace
56
+ # Must be relative path from root
57
+ paths:
58
+ - .
59
+ test-rspec:
60
+ <<: *defaults
61
+ steps:
62
+ - attach_workspace:
63
+ at: ~/workspace
64
+ - run: gem install bundler -v2.1
65
+ - run:
66
+ name: Point bundle to vendor/bundle
67
+ command: bundle --path vendor/bundle
68
+ - run: mkdir result
69
+ - run:
70
+ name: Running rspec
71
+ command: dockerize -wait tcp://127.0.0.1:3306 -wait tcp://127.0.0.1:5432 -timeout 1m bundle exec rspec --format progress --format RspecJunitFormatter -o result/rspec.xml
72
+ - store_test_results:
73
+ path: ~/workspace/result
74
+
75
+ publish-to-artifactory:
76
+ working_directory: ~/workspace
77
+ docker:
78
+ - image: 421990735784.dkr.ecr.us-east-1.amazonaws.com/ci-build-environment:ruby-2.5
79
+ steps:
80
+ - checkout
81
+ - run: chmod +x ./deploy/artifactory.sh && ./deploy/artifactory.sh
82
+
83
+ workflows:
84
+ version: 2
85
+ build-test-and-publish:
86
+ jobs:
87
+ - build
88
+ - test-rspec:
89
+ requires:
90
+ - build
91
+ - publish-to-artifactory:
92
+ filters:
93
+ branches:
94
+ only:
95
+ - master
96
+ requires:
97
+ - test-rspec
data/.dockerignore ADDED
@@ -0,0 +1,2 @@
1
+ log/
2
+ tmp/
data/.gitignore ADDED
@@ -0,0 +1,41 @@
1
+ # Created by .ignore support plugin (hsz.mobi)
2
+ ### Ruby template
3
+ *.gem
4
+ *.rbc
5
+ /.config
6
+ /coverage/
7
+ /InstalledFiles
8
+ /pkg/
9
+ /spec/reports/
10
+ /spec/examples.txt
11
+ /test/tmp/
12
+ /test/version_tmp/
13
+ /tmp/
14
+ /log/
15
+
16
+ # Used by dotenv library to load environment variables.
17
+ # .env
18
+
19
+ ## Documentation cache and generated files:
20
+ /.yardoc/
21
+ /_yardoc/
22
+ /doc/
23
+ /rdoc/
24
+
25
+ ## Environment normalization:
26
+ /.bundle/
27
+ /vendor/bundle
28
+ /lib/bundler/man/
29
+
30
+ # for a library or gem, you might want to ignore these files since the code is
31
+ # intended to run in multiple environments; otherwise, check them in:
32
+ # Gemfile.lock
33
+ # .ruby-version
34
+ # .ruby-gemset
35
+
36
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
37
+ .rvmrc
38
+
39
+ test.sqlite3
40
+
41
+ .idea
data/.gitmodules ADDED
File without changes
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper --tag ~integration --format documentation
data/.rubocop.yml ADDED
@@ -0,0 +1,56 @@
1
+ inherit_gem:
2
+ flipp_ruby_style: rubocop.yml
3
+
4
+ AllCops:
5
+ Exclude:
6
+ - 'lib/flipp_ruby_kafka/monkey_patches/*.rb'
7
+
8
+ RSpec/ExpectActual:
9
+ Enabled: false
10
+
11
+ RSpec/BeforeAfterAll:
12
+ Enabled: false
13
+
14
+ Rails/ApplicationRecord:
15
+ Enabled: false
16
+
17
+ Rails/TimeZone:
18
+ Enabled: false
19
+
20
+ Style/DateTime:
21
+ Enabled: false
22
+
23
+ RSpec/ContextWording:
24
+ Enabled: false
25
+
26
+ RSpec/MessageSpies:
27
+ Enabled: false
28
+
29
+ RSpec/EmptyExampleGroup:
30
+ Exclude:
31
+ - "spec/spec_helper.rb"
32
+
33
+ Lint/UnusedMethodArgument:
34
+ Exclude:
35
+ - 'lib/flipp_ruby_kafka/publish_backend.rb'
36
+
37
+ Security/YAMLLoad:
38
+ Exclude:
39
+ - 'lib/flipp_ruby_kafka.rb'
40
+
41
+ Lint/UnusedBlockArgument:
42
+ Exclude:
43
+ - 'lib/flipp_ruby_kafka/test_helpers.rb'
44
+
45
+ Metrics/ParameterLists:
46
+ Exclude:
47
+ - 'lib/flipp_ruby_kafka/test_helpers.rb'
48
+
49
+ Security/Eval:
50
+ Exclude:
51
+ - 'spec/spec_helper.rb'
52
+
53
+ Lint/RescueException:
54
+ Exclude:
55
+ - 'spec/spec_helper.rb'
56
+ - 'lib/flipp_ruby_kafka/utils/executor.rb'
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ flipp-ruby-kafka
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.0
data/CHANGELOG.md ADDED
@@ -0,0 +1,466 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.4.1] - 2021-05-13
9
+ - Change localhost to 127.0.0.1 for better use with Docker.
10
+
11
+ ## [2.4.0] - 2021-01-28
12
+ - Bump version of ruby-kafka.
13
+
14
+ ## [2.3.2] - 2020-10-13
15
+ - Added generators for schema and topic validation - see README.
16
+
17
+ ## [2.3.1] - 2020-08-11
18
+ - Update ddtrace requirement
19
+
20
+ ## [2.3.0] - 2020-03-19
21
+ - Non-beta version!
22
+
23
+ ## [2.3.0-beta2] - 2020-01-30
24
+ - Fix crash when not using ActiveRecord.
25
+
26
+ # [2.3.0-beta1] - 2020-01-17
27
+ - Bump Deimos version to 1.5.
28
+
29
+ ## [2.2.0-beta5] - 2019-12-17
30
+ - Bugfix for previous release.
31
+
32
+ ## [2.2.0-beta4] - 2019-12-16
33
+ - Clone loggers on startup.
34
+
35
+ ## [2.2.0-beta2] - 2019-12-16
36
+ - Bump Deimos version to 1.4.
37
+
38
+ ## [2.1.4] - 2019-12-04
39
+ - Bugfix related to phobos_config_file being set incorrectly.
40
+
41
+ ## [2.1.2] - 2019-11-26
42
+ - Bugfix related to the fatal_error block for the DB
43
+
44
+ ## [2.1.0] - 2019-09-12
45
+ - Fail forever if the DB is down when getting an error consuming a message.
46
+
47
+ ## [2.0.1] - 2019-09-11
48
+ - Change required Deimos version to ~> 1
49
+
50
+ ## [2.0.0] - 2019-09-03
51
+ - Official release of FlippRubyKafka 2.0!
52
+
53
+ ## [2.0.0-beta21] - 2019-08-29
54
+ - Update Deimos beta version
55
+
56
+ ## [2.0.0-beta20] - 2019-08-28
57
+ - Fix bug where scripts outside the main Rails directory wouldn't start up
58
+
59
+ ## [2.0.0-beta19] - 2019-08-28
60
+ - Update Deimos beta version
61
+
62
+ ## [2.0.0-beta18] - 2019-08-26
63
+ - Update Deimos beta version
64
+
65
+ ## [2.0.0-beta17] - 2019-08-22
66
+ - Update Deimos beta version
67
+
68
+ ## [2.0.0-beta16] - 2019-08-20
69
+ - Fix for test helpers being included before the gem itself.
70
+
71
+ ## [2.0.0-beta15] - 2019-08-09
72
+ - Update Deimos beta version
73
+
74
+ ## [2.0.0-beta14] - 2019-08-08
75
+ - Update Deimos beta version
76
+
77
+ ## [2.0.0-beta13] - 2019-08-07
78
+ - Update Deimos beta version
79
+
80
+ ## [2.0.0-beta12] - 2019-08-06
81
+ - Update Deimos beta version
82
+
83
+ ## [2.0.0-beta11] - 2019-08-02
84
+ - Update Deimos beta version
85
+
86
+ ## [2.0.0-beta10] - 2019-08-01
87
+ - Update Datadog configuration to be separate from Railtie.
88
+ - Removed phobos:start rake task.
89
+
90
+ ## [2.0.0-beta3] - 2019-06-12
91
+ - Change over all functionality to use the open-source Deimos project.
92
+
93
+ ## [1.0.0-beta19] - 2019-07-19
94
+ - Add Kafkateria support for trait parameters
95
+
96
+ ## [1.0.0-beta14] - 2019-05-27
97
+ - Another fix for DB backend for encoded partition keys. -_-
98
+
99
+ ## [1.0.0-beta13] - 2019-05-27
100
+ - Another fix for DB backend for encoded keys.
101
+
102
+ ## [1.0.0-beta12] - 2019-05-23
103
+ - Fix DB backend so it saves messages correctly in binary format.
104
+
105
+ ## [1.0.0-beta11] - 2019-05-06
106
+ - Return the produced messages from latest Kafkateria version with `kafkateria_produce_messages`.
107
+
108
+ ## [1.0.0-beta10] - 2019-04-17
109
+ - Fix crash when using InlineConsumer with a config_class
110
+ - Proactively raise an error when calling `get_messages_for` without enough configuration
111
+
112
+ ## [1.0.0-beta9] - 2019-04-16
113
+ - Updated TestHelper to be able to send null payloads
114
+
115
+ ## [1.0.0-beta8] - 2019-04-03
116
+ - Fixed the TestHelpers fix correctly -_-
117
+
118
+ ## [1.0.0-beta7] - 2019-03-28
119
+ - FIX: TestHelpers was stubbing out Datadog tracing in a way that didn't
120
+ preserve blocks that were passed in (e.g. for rendering ActionMailer).
121
+
122
+ ## [1.0.0-beta6] - 2019-03-012
123
+ - BREAKING CHANGE - added config.report_lag to make lag reporting optional.
124
+ Default is now FALSE.
125
+
126
+ ## [1.0.0-beta5] - 2019-03-08
127
+ - Fixed bug with KafkaMessage not saving
128
+
129
+ ## [1.0.0-beta4] - 2019-03-08
130
+ - Changed Kafka message DB tables to use blobs instead of text.
131
+
132
+ ## [1.0.0-beta3] - 2019-03-07
133
+ - A number of fixes for Rails 3
134
+ - Fixes based on integration testing
135
+
136
+ ## [1.0.2-beta] - 2019-02-14
137
+ - Removed metadata monkey patch for RubyKafka as it's no longer needed.
138
+
139
+ ## [1.0.1-beta] - 2019-01-21
140
+ - Major breaking change!
141
+ - Introduce new key config of "none: true" which **must be used** if not
142
+ passing any keys to the producer.
143
+ - Removal of KafkaPublishFailure.
144
+ - Change KafkaSource to send messages *inside* the transaction instead of
145
+ using after_commit.
146
+ - In TestHelpers, changed logic so that producers and consumers are only
147
+ stubbed when `stub_producers_and_consumers!` is called manually.
148
+ This allows for easier management of integration tests.
149
+ - Removed checking of `:kafka_integration` metadata key.
150
+ - Additional features:
151
+ - Introducing new concept of "backends", including a database backend.
152
+ - Add `publish_backend` to Configuration
153
+ - Add `start_db_backend!` to base class
154
+ - Add `force_send: true` option to `Producer#publish_list`,
155
+ `ActiveRecordProducer.send_event` and `ActiveRecordProducer.send_events`
156
+ - Start a Kafka sending thread when `publish_backend` is set to `db` unless
157
+ configured not to
158
+
159
+ ## [0.7.14] - 2019-04-17
160
+ - Fix crash when using InlineConsumer with a config_class
161
+ - Proactively raise an error when calling `get_messages_for` without enough configuration
162
+
163
+ ## [0.7.13] - 2019-04-16
164
+ - Updated TestHelper to be able to send null payloads
165
+
166
+ ## [0.7.12] - 2019-04-03
167
+ - Fixed the TestHelpers fix correctly -_-
168
+
169
+ ## [0.7.11] - 2019-03-28
170
+ - FIX: TestHelpers was stubbing out Datadog tracing in a way that didn't
171
+ preserve blocks that were passed in (e.g. for rendering ActionMailer).
172
+
173
+ ## [0.7.10] - 2019-03-07
174
+ - FIX: InlineConsumer was caching the decoder when asked for multiple
175
+ topics in a row
176
+
177
+ ## [0.7.9.1] - 2019-03-07
178
+ - FIX: Raise an error when Kafkateria returns a non-200 response code in
179
+ Kafkateria helper methods.
180
+
181
+ ## [0.7.8] - 2019-03-07
182
+ - Added `kafkateria_get_messages` helper method.
183
+
184
+ ## [0.7.7] - 2019-02-28
185
+ - Fix for kafkateria_delete_topic method.
186
+
187
+ ## [0.7.6] - 2019-02-11
188
+ - Added Kafkateria helper methods to TestHelpers.
189
+
190
+ ## [0.7.5] - 2019-02-11
191
+ - Added `:kafka_integration` metadata to disable stubbing of producers/consumers.
192
+
193
+ ## [0.7.4] - 2019-02-09
194
+ - Added Utils::InlineConsumer for integration testing.
195
+
196
+ ## [0.7.2] - 2019-01-19
197
+ - Added watched_attribute override functionality for producers.
198
+
199
+ ## [0.7.1] - 2019-01-03
200
+ - Official 0.7 release.
201
+
202
+ ## [0.7.1-beta10] - 2018-12-20
203
+ - Fixed issue with schema coercer not coercing values to boolean.
204
+
205
+ ## [0.7.1-beta9] - 2018-12-12
206
+ - Monkey patched Phobos bug on startup.
207
+
208
+ ## [0.7.1-beta8] - 2018-12-07
209
+ - Fixed bug where attributes sent to generate_payloads_for_resend() were not
210
+ with indifferent access.
211
+
212
+ ## [0.7.1-beta7] - 2018-12-07
213
+ - Forgot to merge master -_-
214
+
215
+ ## [0.7.1-beta6] - 2018-12-05
216
+ - Do not save publish failures if the failure is not related to Kafka producing
217
+ - Do not raise an exception if the failure is related to Kafka producing and is
218
+ already caught
219
+
220
+ ## [0.7.1-beta5] - 2018-11-30
221
+ - Rubocop fixes.
222
+
223
+ ## [0.7.1.-beta4] - 2018-11-29
224
+ - Remove heartbeat thread logic and revert to RubyKafka in-thread heartbeating.
225
+
226
+ ## [0.7.1-beta3] - 2018-11-26
227
+ - Centralize error notifications so both publish and Avro failures get sent
228
+ to the same notification, `produce_error`.
229
+
230
+ ## [0.7.1-beta2] - 2018-11-23
231
+ - Fix KafkaPublishFailure so it sends for async messages as well.
232
+
233
+ ## [0.7.0-beta] - 2018-11-21
234
+ - Bumped ruby-kafka version up to 0.7.4.
235
+
236
+ ## [0.6.22] - 2018-12-07
237
+ - Fixed bug where attributes sent to generate_payloads_for_resend() were not
238
+ with indifferent access.
239
+
240
+ ## [0.6.22] - 2018-12-07
241
+ - Fixed bug where attributes sent to generate_payloads_for_resend() were not
242
+ with indifferent access.
243
+
244
+ ## [0.6.21] - 2018-12-01
245
+ - Fixed bug where nil payloads were being coerced into strings incorrectly instead
246
+ of raising an error.
247
+
248
+ ## [0.6.20] - 2018-11-20
249
+ - Added publish_error DataDog metric.
250
+
251
+ ## [0.6.19] - 2018-11-16
252
+ - Fixed crash on exit if Kafka client didn't exist.
253
+
254
+ ## [0.6.18] - 2018-11-14
255
+ - Updated README.
256
+ - Fixed bug when errors occurred with KafkaPublishFailure.
257
+
258
+ ## [0.6.17] - 2018-11-13
259
+ - Bugfix: Send all outstanding messages when the app exits.
260
+ - Bugfix: Using key_schema in a consumer should use AvroTurf::Messaging instead
261
+ of AvroTurf.
262
+
263
+ ## [0.6.16] - 2018-11-09
264
+ - Bugfix: Crash when there's a problem with lag reporting
265
+
266
+ ## [0.6.15] - 2018-11-06
267
+ - Bugfix: Ignore attr_protected in older versions of Rails.
268
+
269
+ ## [0.6.14] - 2018-11-05
270
+ - Bugfix: Do not save updated_at and created_at for records if they're in the schema.
271
+
272
+ ## [0.6.13] - 2018-11-03
273
+ - Add `FlippRubyKafka.disable_producers` method.
274
+
275
+ ## [0.6.12] - 2018-10-04
276
+ - Fix for union types with ActiveRecordConsumer.
277
+
278
+ ## [0.6.11] - 2018-09-14
279
+ - Fix for crash when given a timestamp which is blank on the consumer side
280
+
281
+ ## [0.6.10] - 2018-09-14
282
+ - Allow KafkaSource to use multiple producers.
283
+ - Do not crash if Avro encoding fails and reraise_consumer_errors is set to false.
284
+ - Fix for test helper crash when failing `expect(topic).not_to have_sent(anything)`
285
+
286
+ ## [0.6.9] - 2018-09-07
287
+ - Fix bug where logger was logging the non-coerced version of the payload instead
288
+ of what was actually sent.
289
+
290
+ ## [0.6.8] - 2018-09-06
291
+ - Fix bug where nil payloads were crashing.
292
+
293
+ ## [0.6.7] - 2018-08-30
294
+ - Lock RubyKafka version to 0.6 for now since 0.7 breaks our monkey patch
295
+ - Coerce nil values to boolean for ActiveRecordProducers
296
+
297
+ ## [0.6.5] - 2018-08-20
298
+ - Fix for KafkaPublishFailure generator not working with PostgreSQL.
299
+
300
+ ## [0.6.4] - 2018-08-16
301
+ - Added PlatformSchemaValidation class to generate the schema validation file.
302
+ - Fixed bug where the producer was not logging generated message ID / timestamps.
303
+
304
+ ## [0.6.3] - 2018-08-10
305
+ - Updated avro-patches to avoid needing a monkey-patch
306
+ - Fixes to TestHelpers to work with RSpec 2.
307
+
308
+ ## [0.6.2] - 2018-08-03
309
+ - Fixed TestHelpers as well
310
+
311
+ ## [0.6.1] - 2018-08-03
312
+ - Fixed a bug with ActiveRecordConsumer crashing with Avro-encoded keys.
313
+
314
+ ## [0.6.0] - 2018-07-30
315
+ - Update to Phobos 1.8
316
+ - decode_key no longer needed for consumers with encoded keys
317
+
318
+ ## [0.5.22] - 2018-07-22
319
+ - Added the ability to specify partition keys separate from payload keys.
320
+
321
+ ## [0.5.21] - 2018-07-22
322
+ - Added the KafkaSource mixin.
323
+ - Added the PublishFailure model and generator.
324
+
325
+ ## [0.5.20] - 2018-07-13
326
+ - One more issue related to heartbeat threading.
327
+
328
+ ## [0.5.19] - 2018-07-12
329
+ - Fix for a different crash :(
330
+
331
+ ## [0.5.18] - 2018-07-12
332
+ - Fix for a crash that can happen due to multithreading.
333
+
334
+ ## [0.5.17] - 2018-07-10
335
+ - Changed heartbeat to be attached to the RubyKafka consumer instead of the
336
+ Phobos Executor. This should solve some of the stability problems around
337
+ heartbeat timeouts since we should now only be sending heartbeats from a
338
+ thread and not the main consumer loop.
339
+
340
+ ## [0.5.16] - 2018-06-27
341
+ - Fixed an issue where encoding with key schemas would use the namespaced
342
+ subject in the schema registry instead of "{topic}-key".
343
+
344
+ ## [0.5.15] - 2018-06-20
345
+
346
+ - Yet another fix related to heartbeats (only send lag on successful heartbeats)
347
+ - Expose method to stub individual producer/consumer classes in tests.
348
+
349
+ ## [0.5.14] - 2018-06-11
350
+
351
+ - Send a new metric, handler/time:time_delayed, which records the difference in
352
+ time between when a message was sent and when it was consumed
353
+
354
+ ## [0.5.13] - 2018-06-01
355
+
356
+ - Yet another fix related to heartbeat threads.
357
+ - Allow lag to be reported with Rails 3.
358
+
359
+ ## [0.5.12] - 2018-06-08
360
+
361
+ - Fixed a bug introduced with ruby-kafka 0.6.6 which causes heartbeats to fail.
362
+
363
+ ## [0.5.11] - 2018-06-01
364
+
365
+ - Internal refactor related to heartbeat thread again.
366
+
367
+ ## [0.5.10] - 2018-05-30
368
+
369
+ - Fixed another bug with heartbeat threads to ensure they shut down correctly.
370
+
371
+ ## [0.5.9] - 2018-05-29
372
+
373
+ - Fixed lag reporting to work with batch consuming.
374
+ - Fix TestHelpers to work with RSpec 2.
375
+
376
+ ## [0.5.8] - 2018-05-24
377
+
378
+ - Added lag reporting to DataDog.
379
+
380
+ ## [0.5.7] - 2018-05-18
381
+
382
+ - Set sync_produce to true when running Kafka consumers via rake phobos:start.
383
+ - Set Phobos/RubyKafka to use the same JSON logger as FlippRubyKafka.
384
+ - Updated failure message for the have_sent matcher to provide more information
385
+ (diff of the messages)
386
+
387
+ ## [0.5.6] - 2018-05-15
388
+
389
+ - Fixed bug with heartbeat threads where they would not shut down in a timely
390
+ fashion.
391
+
392
+ ## [0.5.5] - 2018-05-14
393
+
394
+ - Throw validation errors when the payload has extra fields, not just when
395
+ it's missing fields.
396
+ - Add ActiveSupport::Notifications instrumentation.
397
+
398
+ ## [0.5.4] - 2018-05-08
399
+
400
+ - Actually test local schemas against payloads.
401
+ - Allow `field_config` to take a symbol or string as the field name.
402
+
403
+ ## [0.5.3] - 2018-05-04
404
+
405
+ - Fixes for testing ActiveRecordConsumer.
406
+
407
+ ## [0.5.2] - 2018-05-04
408
+
409
+ - Added ActiveRecordConsumer.
410
+
411
+ ## [0.5.1] - 2018-05-02
412
+
413
+ ### Fixed
414
+
415
+ - Auto-coercion correctly works with union types and null payloads.
416
+
417
+ ## [0.5] - 2018-05-02
418
+
419
+ ### Changed
420
+
421
+ - Some fields are now auto-coerced to types matching the schema.
422
+
423
+ ## [0.4.6] - 2018-04-30
424
+
425
+ ### Fixed
426
+
427
+ - Using `FlippDatadog.time` was broken in RSpecs.
428
+
429
+ ## [0.4.5] - 2018-04-24
430
+
431
+ ### Changed
432
+
433
+ - `ActiveRecordProducer.generate_payload` now doesn't care whether the keys
434
+ returned are strings or symbols.
435
+
436
+ ## [0.4.4] - 2018-04-22
437
+
438
+ ### Changed
439
+
440
+ - Topic is now passed into `on_producer_error`.
441
+
442
+ ## [0.4.3] - 2018-04-22
443
+
444
+ ### Added
445
+
446
+ - Added `on_producer_error` to configuration.
447
+
448
+ ## [0.4.2] - 2018-04-22
449
+
450
+ ### Fixed
451
+
452
+ - Fix for crash when using `import` on records with an ActiveRecordProducer.
453
+
454
+ ## [0.4.1] - 2018-04-21
455
+
456
+ ### Added
457
+
458
+ - Added ActiveRecordProducer.
459
+ - Automatically add timestamps to the message if a `timestamp` field is in
460
+ the schema and the payload doesn't have a corresponding value.
461
+
462
+ ## [0.4] - 2018-04-20
463
+
464
+ ### Changed
465
+
466
+ - Change the schema names used to reflect best practices (`{topic_name}-value`).