racecar 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b82a4c9f1c518dcf39fec9f30661af192aecfcd2
4
- data.tar.gz: 7659830d99302a6d4d96e1f13a5822b0485c1b38
2
+ SHA256:
3
+ metadata.gz: 2e43d9ec7a2fe43e035cb42d1ab21a250072d26bd5dc1b6dde34600870193152
4
+ data.tar.gz: 4a3dc623057a7c3c78ab5a009a85f9b1bf839d49334578894575a93cb0a06ea9
5
5
  SHA512:
6
- metadata.gz: 9ccd18859d2f8dd1f96cf9e310fa3677a0338a5f96568fa70d053812bcf3a7f3d2adf2190b1be63a8d86aa57f3898ada337e7bb15979bd456540e8b5a7d14965
7
- data.tar.gz: fb5f1e848839852135544d6ad86603288957a40155dd725f68a0d356d61a0fdeb2fa399bd27cb087b2bb89f5f69a24042480d580e07e19d6b44872740083c2d5
6
+ metadata.gz: 2676b9e5adaa2280b7865b3cc636603ec4a6c827c648b4d9df21796f1891da1f998863c370ebd674ecbf8b0f5b3cf1953e2e521ba09a422c9eed7bfde3d93808
7
+ data.tar.gz: 59b529314b4b3b13a5ebad8f9a53c51aa24ed4ef8ae22b30f17dfac3474a8dc7714776fcacda29b04b649df4ffee2754c1bd0d1f9da1048b43e3eff864ff1bb1
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## racecar v0.3.8
6
+
7
+ * Change the default `max_wait_time` to 1 second.
8
+ * Allow setting the `offset_retention_time` for consumers.
9
+ * Allow pausing partitions indefinitely (#63).
10
+
5
11
  ## racecar v0.3.7
6
12
 
7
13
  * Allow setting the key and/or partition key when producing messages.
data/README.md CHANGED
@@ -57,7 +57,7 @@ In Kafka, _consumer groups_ are sets of processes that collaboratively process m
57
57
 
58
58
  ### Creating consumers
59
59
 
60
- A Racecar consumer is a simple Rails class that inherits from `Racecar::Consumer`:
60
+ A Racecar consumer is a simple Ruby class that inherits from `Racecar::Consumer`:
61
61
 
62
62
  ```ruby
63
63
  class UserBanConsumer < Racecar::Consumer
@@ -231,6 +231,7 @@ The consumers will checkpoint their positions from time to time in order to be a
231
231
 
232
232
  * `offset_commit_interval` – How often to save the consumer's position in Kafka. Default is every 10 seconds.
233
233
  * `offset_commit_threshold` – How many messages to process before forcing a checkpoint. Default is 0, which means there's no limit. Setting this to e.g. 100 makes the consumer stop every 100 messages to checkpoint its position.
234
+ * `offset_retention_time` - How long committed offsets will be retained. Defaults to the broker setting.
234
235
 
235
236
  #### Timeouts & intervals
236
237
 
@@ -241,7 +242,7 @@ All timeouts are defined in number of seconds.
241
242
  * `pause_timeout` – How long to pause a partition for if the consumer raises an exception while processing a message. Default is to pause for 10 seconds. Set this to zero in order to disable automatic pausing of partitions.
242
243
  * `connect_timeout` – How long to wait when trying to connect to a Kafka broker. Default is 10 seconds.
243
244
  * `socket_timeout` – How long to wait when trying to communicate with a Kafka broker. Default is 30 seconds.
244
- * `max_wait_time` – How long to allow the Kafka brokers to wait before returning messages. A higher number means larger batches, at the cost of higher latency. Default is 5 seconds.
245
+ * `max_wait_time` – How long to allow the Kafka brokers to wait before returning messages. A higher number means larger batches, at the cost of higher latency. Default is 1 second.
245
246
 
246
247
  #### SSL encryption, authentication & authorization
247
248
 
@@ -265,6 +266,16 @@ If using PLAIN:
265
266
  * `sasl_plain_username` – The username used to authenticate.
266
267
  * `sasl_plain_password` – The password used to authenticate.
267
268
 
269
+ #### Datadog monitoring
270
+
271
+ Racecar supports configuring ruby-kafka's [Datadog](https://www.datadoghq.com/) monitoring integration. If you're running a normal Datadog agent on your host, you just need to set `datadog_enabled` to `true`, as the rest of the settings come with sane defaults.
272
+
273
+ * `datadog_enabled` – Whether Datadog monitoring is enabled (defaults to `false`).
274
+ * `datadog_host` – The host running the Datadog agent.
275
+ * `datadog_port` – The port of the Datadog agent.
276
+ * `datadog_namespace` – The namespace to use for Datadog metrics.
277
+ * `datadog_tags` – Tags that should always be set on Datadog metrics.
278
+
268
279
 
269
280
  ### Testing consumers
270
281
 
@@ -19,7 +19,10 @@ module Racecar
19
19
  desc "How often to send a heartbeat message to Kafka"
20
20
  float :heartbeat_interval, default: 10
21
21
 
22
- desc "How long to pause a partition for if the consumer raises an exception while processing a message"
22
+ desc "How long committed offsets will be retained."
23
+ integer :offset_retention_time
24
+
25
+ desc "How long to pause a partition for if the consumer raises an exception while processing a message -- set to -1 to pause indefinitely"
23
26
  float :pause_timeout, default: 10
24
27
 
25
28
  desc "The idle timeout after which a consumer is kicked out of the group"
@@ -32,7 +35,7 @@ module Racecar
32
35
  float :socket_timeout, default: 30
33
36
 
34
37
  desc "How long to allow the Kafka brokers to wait before returning messages"
35
- float :max_wait_time, default: 5
38
+ float :max_wait_time, default: 1
36
39
 
37
40
  desc "A prefix used when generating consumer group names"
38
41
  string :group_id_prefix
@@ -139,6 +142,7 @@ module Racecar
139
142
 
140
143
  self.subscriptions = consumer_class.subscriptions
141
144
  self.max_wait_time = consumer_class.max_wait_time || self.max_wait_time
145
+ self.offset_retention_time = consumer_class.offset_retention_time || self.offset_retention_time
142
146
  self.pidfile ||= "#{group_id}.pid"
143
147
  end
144
148
 
@@ -5,6 +5,7 @@ module Racecar
5
5
  class << self
6
6
  attr_accessor :max_wait_time
7
7
  attr_accessor :group_id
8
+ attr_accessor :offset_retention_time
8
9
 
9
10
  def subscriptions
10
11
  @subscriptions ||= []
@@ -35,6 +35,7 @@ module Racecar
35
35
  offset_commit_threshold: config.offset_commit_threshold,
36
36
  session_timeout: config.session_timeout,
37
37
  heartbeat_interval: config.heartbeat_interval,
38
+ offset_retention_time: config.offset_retention_time,
38
39
  )
39
40
 
40
41
  # Stop the consumer on SIGINT, SIGQUIT or SIGTERM.
@@ -107,6 +108,11 @@ module Racecar
107
108
  # left off.
108
109
  @logger.warn "Pausing partition #{e.topic}/#{e.partition} for #{config.pause_timeout} seconds"
109
110
  consumer.pause(e.topic, e.partition, timeout: config.pause_timeout)
111
+ elsif config.pause_timeout == -1
112
+ # A pause timeout of -1 means indefinite pausing, which in ruby-kafka is done by passing nil as
113
+ # the timeout.
114
+ @logger.warn "Pausing partition #{e.topic}/#{e.partition} indefinitely, or until the process is restarted"
115
+ consumer.pause(e.topic, e.partition, timeout: nil)
110
116
  end
111
117
 
112
118
  config.error_handler.call(e.cause, {
@@ -1,3 +1,3 @@
1
1
  module Racecar
2
- VERSION = "0.3.7"
2
+ VERSION = "0.3.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: racecar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Schierbeck
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-01-15 00:00:00.000000000 Z
12
+ date: 2018-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: king_konf
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  requirements: []
142
142
  rubyforge_project:
143
- rubygems_version: 2.6.13
143
+ rubygems_version: 2.7.6
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: A framework for running Kafka consumers