waterdrop 0.3.2.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8146a30bc7d849c7e9bd8d5ab6a3e65697467a4
4
- data.tar.gz: b6b606e0194c98093293fd42fb891d821a2937a7
3
+ metadata.gz: d6ebd8fb5186e625ad83a4039b1953e145e6ed6e
4
+ data.tar.gz: 3f5b6e5d6ac383388a4fff4d18f6600122e91bbc
5
5
  SHA512:
6
- metadata.gz: 5e49033efc2f820a6c61591f475f9ff2c9782b8867a10b95ff31d4a375f0979913aa96315ac93ade25befbad558309ebc95c1015de98b21933c19b7b745a8c7c
7
- data.tar.gz: 54a112efc2652be8e0315b183f7fb3e7c16322d3cd67ef145d3f49c6ba172baf9cffdd374b2651bfe07c9500b150cb5d78d6c6ae4da73e31368121dd58d8faa6
6
+ metadata.gz: 2ffc2c7b34e2e9f53b61db43de61fe5f557af524ffba98f1101a1a630d5af021d90d76e0d65a0c06a2d13114933240d9f984d0b359251ac58af84e2afff04320
7
+ data.tar.gz: d1617c0169e356b16332d9b70285e58f0b524185ca2cc413903d53316f379bf1a58a1d383c990883cb2eb827194a6c9d2959d3459a3f04f99548c3c2d5394f47
data/.rspec CHANGED
@@ -1,4 +1 @@
1
- --color
2
- --format documentation
3
1
  --require spec_helper
4
- --tty
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # WaterDrop changelog
2
2
 
3
+ ## 0.4 unreleased
4
+ - Bump to match Karafka
5
+ - Renamed ```hosts``` to ```seed_brokers```
6
+ - Removed the ```ssl``` scoping for ```kafka``` config namespace to better match Karafka conventions
7
+ - Added ```client_id``` option on a root config level
8
+ - Added ```logger``` option on a root config level
9
+ - Auto Propagation of config down to ruby-kafka
10
+
3
11
  ## 0.3.2
4
12
  - Removed support for Ruby 2.1.*
5
13
  - ~~Ruby 2.3.3 as default~~
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- waterdrop (0.3.2.4)
4
+ waterdrop (0.4.0)
5
5
  bundler
6
6
  connection_pool
7
7
  dry-configurable (~> 0.6)
8
8
  null-logger
9
9
  rake
10
- ruby-kafka
10
+ ruby-kafka (~> 0.4)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
@@ -18,6 +18,9 @@ GEM
18
18
  docile (1.1.5)
19
19
  dry-configurable (0.7.0)
20
20
  concurrent-ruby (~> 1.0)
21
+ ffi (1.9.18)
22
+ gssapi (1.2.0)
23
+ ffi (>= 1.0.1)
21
24
  json (2.1.0)
22
25
  null-logger (0.1.4)
23
26
  rake (12.0.0)
@@ -34,7 +37,8 @@ GEM
34
37
  diff-lcs (>= 1.2.0, < 2.0)
35
38
  rspec-support (~> 3.6.0)
36
39
  rspec-support (3.6.0)
37
- ruby-kafka (0.3.17)
40
+ ruby-kafka (0.4.0)
41
+ gssapi (>= 1.2.0)
38
42
  simplecov (0.14.1)
39
43
  docile (~> 1.1.0)
40
44
  json (>= 1.8, < 3)
data/README.md CHANGED
@@ -29,25 +29,33 @@ bundle install
29
29
 
30
30
  WaterDrop has following configuration options:
31
31
 
32
- | Option | Required | Value type | Description |
33
- |---------------------------|------------|---------------|----------------------------------|
34
- | send_messages | true | Boolean | Should we send messages to Kafka |
35
- | kafka.hosts | true | Array<String> | Kafka servers hosts with ports |
36
- | connection_pool_size | true | Integer | Kafka connection pool size |
37
- | connection_pool_timeout | true | Integer | Kafka connection pool timeout |
38
- | raise_on_failure | true | Boolean | Should we raise an exception when we cannot send message to Kafka - if false will silently ignore failures (will just ignore them) |
39
- | kafka.ssl.ca_cert | false | String | SSL CA certificate |
40
- | kafka.ssl.client_cert | false | String | SSL client certificate |
41
- | kafka.ssl.client_cert_key | false | String | SSL client certificate password |
32
+ | Option | Required | Value type | Description |
33
+ |-----------------------------|------------|---------------|------------------------------------------------------------------------------------|
34
+ | send_messages | true | Boolean | Should we send messages to Kafka |
35
+ | connect_timeout | false | Integer | Number of seconds to wait while connecting to a broker for the first time |
36
+ | socket_timeout | false | Integer | Number of seconds to wait when reading from or writing to a socket |
37
+ | connection_pool.size | true | Integer | Kafka connection pool size |
38
+ | connection_pool.timeout | true | Integer | Kafka connection pool timeout |
39
+ | kafka.seed_brokers | true | Array<String> | Kafka servers hosts with ports |
40
+ | raise_on_failure | true | Boolean | Should we raise an exception when we cannot send message to Kafka - if false will silently ignore failures |
41
+ | kafka.ssl_ca_cert | false | String | SSL CA certificate |
42
+ | kafka.ssl_ca_cert_file_path | false | String | SSL CA certificate file path |
43
+ | kafka.ssl_client_cert | false | String | SSL client certificate |
44
+ | kafka.ssl_client_cert_key | false | String | SSL client certificate password |
45
+ | kafka.sasl_gssapi_principal | false | String | SASL principal |
46
+ | kafka.sasl_gssapi_keytab | false | String | SASL keytab |
47
+ | kafka.sasl_plain_authzid | false | String | The authorization identity to use |
48
+ | kafka.sasl_plain_username | false | String | The username used to authenticate |
49
+ | kafka.sasl_plain_password | false | String | The password used to authenticate |
42
50
 
43
51
  To apply this configuration, you need to use a *setup* method:
44
52
 
45
53
  ```ruby
46
54
  WaterDrop.setup do |config|
47
55
  config.send_messages = true
48
- config.connection_pool_size = 20
49
- config.connection_pool_timeout = 1
50
- config.kafka.hosts = ['localhost:9092']
56
+ config.connection_pool.size = 20
57
+ config.connection_pool.timeout = 1
58
+ config.kafka.seed_brokers = ['localhost:9092']
51
59
  config.raise_on_failure = true
52
60
  end
53
61
  ```
@@ -57,9 +65,9 @@ This configuration can be placed in *config/initializers* and can vary based on
57
65
  ```ruby
58
66
  WaterDrop.setup do |config|
59
67
  config.send_messages = Rails.env.production?
60
- config.connection_pool_size = 20
61
- config.connection_pool_timeout = 1
62
- config.kafka.hosts = [Rails.env.production? ? 'prod-host:9091' : 'localhost:9092']
68
+ config.connection_pool.size = 20
69
+ config.connection_pool.timeout = 1
70
+ config.kafka.seed_brokers = [Rails.env.production? ? 'prod-host:9091' : 'localhost:9092']
63
71
  config.raise_on_failure = Rails.env.production?
64
72
  end
65
73
  ```
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'bundler'
3
4
  require 'rake'
4
5
  require 'rspec/core/rake_task'
@@ -5,29 +5,59 @@ module WaterDrop
5
5
  class Config
6
6
  extend Dry::Configurable
7
7
 
8
+ # option client_id [String] identifier of this producer
9
+ setting :client_id, 'waterdrop'
10
+ # option logger [Instance, nil] logger that we want to use or nil to
11
+ # fallback to ruby-kafka logger
12
+ setting :logger, nil
8
13
  # Available options
9
- # @option connection_pool_timeout [Fixnum] Amount of time in seconds to wait for a connection
10
- # if none currently available.
11
- setting :connection_pool_timeout
12
- # @option send_messages [Boolean] boolean value to define whether messages should be sent
13
14
  setting :send_messages
14
15
  # @option raise_on_failure [Boolean] Should raise error when failed to deliver a message
15
16
  setting :raise_on_failure
16
- # @option connection_pool_size [Fixnum] The number of connections to pool.
17
- setting :connection_pool_size
17
+
18
+ # Connection pool options
19
+ setting :connection_pool do
20
+ # Connection pool size for producers. Note that we take a bigger number because there
21
+ # are cases when we might have more sidekiq threads than Karafka consumers (small app)
22
+ # or the opposite for bigger systems
23
+ setting :size, 2
24
+ # How long should we wait for a working resource from the pool before rising timeout
25
+ # With a proper connection pool size, this should never happen
26
+ setting :timeout, 5
27
+ end
28
+
18
29
  # option kafka [Hash] - optional - kafka configuration options (hosts)
19
30
  setting :kafka do
20
- # @option hosts [Array<String>] Array that contains Kafka hosts with ports
21
- setting :hosts
31
+ # @option seed_brokers [Array<String>] Array that contains Kafka seed broker hosts with ports
32
+ setting :seed_brokers
33
+ # option connect_timeout [Integer] Sets the number of seconds to wait while connecting to
34
+ # a broker for the first time. When ruby-kafka initializes, it needs to connect to at
35
+ # least one host.
36
+ setting :connect_timeout, 10
37
+ # option socket_timeout [Integer] Sets the number of seconds to wait when reading from or
38
+ # writing to a socket connection to a broker. After this timeout expires the connection
39
+ # will be killed. Note that some Kafka operations are by definition long-running, such as
40
+ # waiting for new messages to arrive in a partition, so don't set this value too low
41
+ setting :socket_timeout, 10
22
42
  # SSL authentication related settings
23
- setting :ssl do
24
- # option ca_cert [String] SSL CA certificate
25
- setting :ca_cert, nil
26
- # option client_cert [String] SSL client certificate
27
- setting :client_cert, nil
28
- # option client_cert_key [String] SSL client certificate password
29
- setting :client_cert_key, nil
30
- end
43
+ # option ca_cert [String] SSL CA certificate
44
+ setting :ssl_ca_cert, nil
45
+ # option ssl_ca_cert_file_path [String] SSL CA certificate file path
46
+ setting :ssl_ca_cert_file_path, nil
47
+ # option client_cert [String] SSL client certificate
48
+ setting :ssl_client_cert, nil
49
+ # option client_cert_key [String] SSL client certificate password
50
+ setting :ssl_client_cert_key, nil
51
+ # option sasl_gssapi_principal [String] sasl principal
52
+ setting :sasl_gssapi_principal, nil
53
+ # option sasl_gssapi_keytab [String] sasl keytab
54
+ setting :sasl_gssapi_keytab, nil
55
+ # option sasl_plain_authzid [String] The authorization identity to use
56
+ setting :sasl_plain_authzid, ''
57
+ # option sasl_plain_username [String] The username used to authenticate
58
+ setting :sasl_plain_username, nil
59
+ # option sasl_plain_password [String] The password used to authenticate
60
+ setting :sasl_plain_password, nil
31
61
  end
32
62
 
33
63
  class << self
@@ -11,8 +11,8 @@ module WaterDrop
11
11
  # @return [::ConnectionPool] connection pool instance that we can then use
12
12
  def pool
13
13
  @pool ||= ConnectionPool.new(
14
- size: ::WaterDrop.config.connection_pool_size,
15
- timeout: ::WaterDrop.config.connection_pool_timeout
14
+ size: ::WaterDrop.config.connection_pool.size,
15
+ timeout: ::WaterDrop.config.connection_pool.timeout
16
16
  ) do
17
17
  WaterDrop::ProducerProxy.new
18
18
  end
@@ -32,9 +32,10 @@ module WaterDrop
32
32
  # ProducerProxy.new.send_message(WaterDrop::Message.new(topic, message))
33
33
  def send_message(message)
34
34
  touch
35
- producer.produce(message.message, {
36
- topic: message.topic
37
- }.merge(message.options))
35
+ producer.produce(
36
+ message.message,
37
+ { topic: message.topic }.merge(message.options)
38
+ )
38
39
  producer.deliver_messages
39
40
  rescue StandardError => e
40
41
  reload!
@@ -57,10 +58,10 @@ module WaterDrop
57
58
  def producer
58
59
  reload! if dead?
59
60
  @producer ||= Kafka.new(
60
- seed_brokers: ::WaterDrop.config.kafka.hosts,
61
- ssl_ca_cert: ::WaterDrop.config.kafka.ssl.ca_cert,
62
- ssl_client_cert: ::WaterDrop.config.kafka.ssl.client_cert,
63
- ssl_client_cert_key: ::WaterDrop.config.kafka.ssl.client_cert_key
61
+ {
62
+ client_id: ::WaterDrop.config.client_id,
63
+ logger: ::WaterDrop.config.logger
64
+ }.merge(::WaterDrop.config.kafka.to_h)
64
65
  ).producer
65
66
  end
66
67
 
@@ -3,5 +3,5 @@
3
3
  # WaterDrop library
4
4
  module WaterDrop
5
5
  # Current WaterDrop version
6
- VERSION = '0.3.2.4'
6
+ VERSION = '0.4.0'
7
7
  end
data/waterdrop.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
 
19
19
  spec.add_dependency 'bundler', '>= 0'
20
20
  spec.add_dependency 'rake', '>= 0'
21
- spec.add_dependency 'ruby-kafka', '>= 0'
21
+ spec.add_dependency 'ruby-kafka', '~> 0.4'
22
22
  spec.add_dependency 'connection_pool', '>= 0'
23
23
  spec.add_dependency 'null-logger'
24
24
  spec.add_dependency 'dry-configurable', '~> 0.6'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waterdrop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2.4
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-30 00:00:00.000000000 Z
12
+ date: 2017-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -43,16 +43,16 @@ dependencies:
43
43
  name: ruby-kafka
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '0.4'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: '0.4'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: connection_pool
58
58
  requirement: !ruby/object:Gem::Requirement