phobos 1.1.0 → 1.2.0

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
2
  SHA1:
3
- metadata.gz: 31d36810a7dbe760625a6f08d618d37780c1f584
4
- data.tar.gz: ffbca77c17a57c8bc86d6497e4e4f6fccb3efdd4
3
+ metadata.gz: 4fc3d3e6b285b1bc4cbb2a0dad3c67137ee9be99
4
+ data.tar.gz: d093c46556e62aa25ebb8e1dd1c40e5681033909
5
5
  SHA512:
6
- metadata.gz: a6f98e9ce96d3c0671db8c7c63cb833b3189f3541706258dc2e4757d2ca714dfc675973c23dd2edb344c5f888c987674a24341d98345de0dc0c6d76de4138db6
7
- data.tar.gz: 7c98f56c03f8d479bb7067bde18e6ba9290184b08eadad0a680c42c6cf001db71e9c42a86357ffd9909bbf27b3364f95e2211fcd05c56eec5a88364101411aad
6
+ metadata.gz: 5a6f68d45bd827a5b59df81a504fca1b4128706dd4755c1d56e2c9fb53f45a0d7eeb23bab6d149cc41a752da87a141dda01f0e97d4d36c71aed1b0739c473ef7
7
+ data.tar.gz: e0eaf75e328b57c3ce05fae5e128bd3ee88246376ce66e41a10b2a1006ec6f2b056052931185226dd993f8abc152f5aec99cadd3df47c82784080d6b231b059f
data/.gitignore CHANGED
@@ -9,6 +9,6 @@
9
9
  spec/examples.txt
10
10
  /tmp/
11
11
  .DS_Store
12
- config/phobos.yml
12
+ config/*.yml
13
13
  log/*.log
14
14
  .byebug_history
data/CHANGELOG.md CHANGED
@@ -4,11 +4,19 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## 1.2.0 (2016-10-10)
8
+
9
+ - [enhancement] Log file can be disabled #20
10
+ - [enhancement] Add a new extra (time_elapsed) for notifications "listener.process_message" and "listener.process_batch" #24
11
+ - [enhancement] Add option to configure ruby-kafka logger #23
12
+
7
13
  ## 1.1.0 (2016-09-02)
14
+
8
15
  - [enhancement] - Removed Hashie as a dependency #12
9
16
  - [feature] Allow configuring consumers min_bytes & max_wait_time #15
10
17
  - [feature] Allow configuring producers max_queue_size, delivery_threshold & delivery_interval #16
11
18
  - [feature] Allow configuring force_encoding for message payload #18
12
19
 
13
20
  ## 1.0.0 (2016-08-08)
21
+
14
22
  - Published on Github with full fledged consumers and producers
data/README.md CHANGED
@@ -346,6 +346,7 @@ end
346
346
  * partition
347
347
  * offset_lag
348
348
  * highwater_mark_offset
349
+ * time_elapsed
349
350
  * `listener.process_message` is sent after process a message. It includes the following payload:
350
351
  * listener_id
351
352
  * group_id
@@ -354,6 +355,7 @@ end
354
355
  * partition
355
356
  * offset
356
357
  * retry_count
358
+ * time_elapsed
357
359
  * `listener.retry_handler_error` is sent after waited for `handler#consume` retry. It includes the following payload:
358
360
  * listener_id
359
361
  * group_id
@@ -1,6 +1,10 @@
1
1
  logger:
2
+ # Optional log file, set to false or remove to disable it
2
3
  file: log/phobos.log
3
4
  level: info
5
+ # Comment the block to disable ruby-kafka logs
6
+ ruby_kafka:
7
+ level: error
4
8
 
5
9
  kafka:
6
10
  # identifier for this application
@@ -4,6 +4,7 @@
4
4
  # what happens when you produce more messages than the producer can handle.
5
5
  #
6
6
  require 'bundler/setup'
7
+ require 'json'
7
8
  require 'phobos'
8
9
 
9
10
  TOPIC = 'test-partitions'
@@ -3,8 +3,8 @@ module Phobos
3
3
  NAMESPACE = 'phobos'
4
4
 
5
5
  def instrument(event, extra = {})
6
- ActiveSupport::Notifications.instrument("#{NAMESPACE}.#{event}", extra) do
7
- yield if block_given?
6
+ ActiveSupport::Notifications.instrument("#{NAMESPACE}.#{event}", extra) do |extra|
7
+ yield(extra) if block_given?
8
8
  end
9
9
  end
10
10
 
@@ -46,8 +46,9 @@ module Phobos
46
46
  highwater_mark_offset: batch.highwater_mark_offset
47
47
  }.merge(listener_metadata)
48
48
 
49
- instrument('listener.process_batch', batch_metadata) do
50
- process_batch(batch)
49
+ instrument('listener.process_batch', batch_metadata) do |batch_metadata|
50
+ time_elapsed = measure { process_batch(batch) }
51
+ batch_metadata.merge!(time_elapsed: time_elapsed)
51
52
  Phobos.logger.info { Hash(message: 'Committed offset').merge(batch_metadata) }
52
53
  end
53
54
 
@@ -111,8 +112,9 @@ module Phobos
111
112
  )
112
113
 
113
114
  begin
114
- instrument('listener.process_message', metadata) do
115
- process_message(message, metadata)
115
+ instrument('listener.process_message', metadata) do |metadata|
116
+ time_elapsed = measure { process_message(message, metadata) }
117
+ metadata.merge!(time_elapsed: time_elapsed)
116
118
  end
117
119
  rescue => e
118
120
  retry_count = metadata[:retry_count]
@@ -156,6 +158,12 @@ module Phobos
156
158
  @encoding ? value.force_encoding(@encoding) : value
157
159
  end
158
160
 
161
+ def measure
162
+ start = Time.now.utc
163
+ yield if block_given?
164
+ (Time.now.utc - start).round(3)
165
+ end
166
+
159
167
  def compact(hash)
160
168
  hash.delete_if { |_, v| v.nil? }
161
169
  end
@@ -1,3 +1,3 @@
1
1
  module Phobos
2
- VERSION = "1.1.0"
2
+ VERSION = '1.2.0'
3
3
  end
data/lib/phobos.rb CHANGED
@@ -37,7 +37,7 @@ module Phobos
37
37
  end
38
38
 
39
39
  def create_kafka_client
40
- Kafka.new(config.kafka.to_hash)
40
+ Kafka.new(config.kafka.to_hash.merge(logger: @ruby_kafka_logger))
41
41
  end
42
42
 
43
43
  def create_exponential_backoff
@@ -47,17 +47,30 @@ module Phobos
47
47
  end
48
48
 
49
49
  def configure_logger
50
+ log_file = config.logger.file
51
+ ruby_kafka = config.logger.ruby_kafka
50
52
  date_pattern = '%Y-%m-%dT%H:%M:%S:%L%zZ'
51
- FileUtils.mkdir_p(File.dirname(config.logger.file))
53
+ log_layout = Logging.layouts.pattern(date_pattern: date_pattern)
54
+ appenders = [Logging.appenders.stdout(layout: log_layout)]
52
55
 
53
- Logging.backtrace true
56
+ Logging.backtrace(true)
54
57
  Logging.logger.root.level = silence_log ? :fatal : config.logger.level
55
58
 
59
+ if log_file
60
+ FileUtils.mkdir_p(File.dirname(log_file))
61
+ appenders << Logging.appenders.file(log_file, layout: log_layout)
62
+ end
63
+
64
+ @ruby_kafka_logger = nil
65
+
66
+ if ruby_kafka
67
+ @ruby_kafka_logger = Logging.logger['RubyKafka']
68
+ @ruby_kafka_logger.appenders = appenders
69
+ @ruby_kafka_logger.level = silence_log ? :fatal : ruby_kafka.level
70
+ end
71
+
56
72
  @logger = Logging.logger[self]
57
- @logger.appenders = [
58
- Logging.appenders.stdout(layout: Logging.layouts.pattern(date_pattern: date_pattern)),
59
- Logging.appenders.file(config.logger.file, layout: Logging.layouts.json(date_pattern: date_pattern))
60
- ]
73
+ @logger.appenders = appenders
61
74
  end
62
75
  end
63
76
  end
data/phobos.gemspec CHANGED
@@ -49,6 +49,7 @@ Gem::Specification.new do |spec|
49
49
  spec.add_development_dependency 'rspec_junit_formatter', '0.2.2'
50
50
  spec.add_development_dependency 'simplecov', '~> 0.12.0'
51
51
  spec.add_development_dependency 'coveralls', '~> 0.8.15'
52
+ spec.add_development_dependency 'timecop'
52
53
 
53
54
  spec.add_dependency 'ruby-kafka', '>= 0.3.14'
54
55
  spec.add_dependency 'concurrent-ruby', '>= 1.0.2'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phobos
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Túlio Ornelas
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-09-02 00:00:00.000000000 Z
16
+ date: 2016-10-10 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: bundler
@@ -113,6 +113,20 @@ dependencies:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
115
  version: 0.8.15
116
+ - !ruby/object:Gem::Dependency
117
+ name: timecop
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
116
130
  - !ruby/object:Gem::Dependency
117
131
  name: ruby-kafka
118
132
  requirement: !ruby/object:Gem::Requirement