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 +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
|