phobos 1.1.0 → 1.2.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: 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