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 +4 -4
- data/.gitignore +1 -1
- data/CHANGELOG.md +8 -0
- data/README.md +2 -0
- data/config/phobos.yml.example +4 -0
- data/examples/publishing_messages_without_consumer.rb +1 -0
- data/lib/phobos/instrumentation.rb +2 -2
- data/lib/phobos/listener.rb +12 -4
- data/lib/phobos/version.rb +1 -1
- data/lib/phobos.rb +20 -7
- data/phobos.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fc3d3e6b285b1bc4cbb2a0dad3c67137ee9be99
|
4
|
+
data.tar.gz: d093c46556e62aa25ebb8e1dd1c40e5681033909
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a6f68d45bd827a5b59df81a504fca1b4128706dd4755c1d56e2c9fb53f45a0d7eeb23bab6d149cc41a752da87a141dda01f0e97d4d36c71aed1b0739c473ef7
|
7
|
+
data.tar.gz: e0eaf75e328b57c3ce05fae5e128bd3ee88246376ce66e41a10b2a1006ec6f2b056052931185226dd993f8abc152f5aec99cadd3df47c82784080d6b231b059f
|
data/.gitignore
CHANGED
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
|
data/config/phobos.yml.example
CHANGED
@@ -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
|
|
data/lib/phobos/listener.rb
CHANGED
@@ -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
|
data/lib/phobos/version.rb
CHANGED
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
|
-
|
53
|
+
log_layout = Logging.layouts.pattern(date_pattern: date_pattern)
|
54
|
+
appenders = [Logging.appenders.stdout(layout: log_layout)]
|
52
55
|
|
53
|
-
Logging.backtrace
|
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.
|
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-
|
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
|