redis-stream 0.4.1 → 0.4.2
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/.travis.yml +1 -2
- data/Gemfile.lock +7 -13
- data/config.yml +2 -1
- data/lib/redis/stream/client.rb +47 -17
- data/lib/redis/stream/version.rb +1 -1
- data/redis-stream.gemspec +1 -1
- metadata +22 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 198b2311a7fcf1023c8c51bb8ea96a6b6626a516539ba459005038703fbc430a
|
4
|
+
data.tar.gz: 89c7601f9fcc02ebd0b195f8728231fba42a5a2f5f4ce60b749107f8a9c21c9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bc5a91481625900e58ff00614776c2eef887cec65e6b0aad5e1b05d74442309f6d37a2e605a5b45542dbd1179870552b6ac4076dc675136b01f0b26c8c9b900
|
7
|
+
data.tar.gz: ab7ddb55e73a6f917ddd108499faff5c2ec69c96e7a861c63cafb32f9fc2040e66dd221babfd5d28098cba4c2abb2ef29752ab9e6eeb45d7f22bfc1acba9b79d
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,31 +1,25 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
redis-stream (0.4.
|
4
|
+
redis-stream (0.4.1)
|
5
5
|
moneta (~> 1.2)
|
6
6
|
multi_json (~> 1.14)
|
7
7
|
redis (= 4.1.3)
|
8
|
-
zipkin
|
8
|
+
zipkin (~> 1.6.1)
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
|
14
|
-
faraday (0.17.3)
|
15
|
-
multipart-post (>= 1.2, < 3)
|
13
|
+
json (2.3.0)
|
16
14
|
minitest (5.13.0)
|
17
15
|
moneta (1.2.1)
|
18
16
|
multi_json (1.14.1)
|
19
|
-
|
20
|
-
rack (2.1.2)
|
17
|
+
opentracing (0.5.0)
|
21
18
|
rake (10.5.0)
|
22
19
|
redis (4.1.3)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
faraday (~> 0.13)
|
27
|
-
rack (>= 1.0)
|
28
|
-
sucker_punch (~> 2.0)
|
20
|
+
zipkin (1.6.1)
|
21
|
+
json
|
22
|
+
opentracing (~> 0.3)
|
29
23
|
|
30
24
|
PLATFORMS
|
31
25
|
java
|
data/config.yml
CHANGED
data/lib/redis/stream/client.rb
CHANGED
@@ -6,7 +6,7 @@ require "thread"
|
|
6
6
|
require "redis/stream/inspect"
|
7
7
|
require "redis/stream/config"
|
8
8
|
require "redis/stream/data_cache"
|
9
|
-
require "
|
9
|
+
require "zipkin/tracer"
|
10
10
|
|
11
11
|
class Redis
|
12
12
|
module Stream
|
@@ -29,7 +29,8 @@ class Redis
|
|
29
29
|
"db" => 0,
|
30
30
|
"config_file_path" => '.',
|
31
31
|
"logger" => Logger.new(STDOUT),
|
32
|
-
"
|
32
|
+
"tracer" => nil
|
33
|
+
}
|
33
34
|
options = default_options.merge(options)
|
34
35
|
|
35
36
|
Redis::Stream::Config.path = options['config_file_path']
|
@@ -39,7 +40,6 @@ class Redis
|
|
39
40
|
db = options["db"]
|
40
41
|
@logger = options["logger"]
|
41
42
|
@cache = options.include?('caching') && options['caching'] ? Redis::Stream::DataCache.new : nil
|
42
|
-
@tracer = ZipkinTracer::RedisStreamHandler.new(self, options["zipkin_config"])
|
43
43
|
@name = name
|
44
44
|
@state = Redis::Stream::State::IDLE
|
45
45
|
@stream = stream_name
|
@@ -60,6 +60,12 @@ class Redis
|
|
60
60
|
|
61
61
|
raise "No redis" if @redis.nil?
|
62
62
|
|
63
|
+
if options.has_key?('tracer') && !options['tracer'].nil?
|
64
|
+
OpenTracing.global_tracer = options["tracer"]
|
65
|
+
elsif Redis::Stream::Config.include?(:zipkin)
|
66
|
+
OpenTracing.global_tracer = Zipkin::Tracer.build(url: Redis::Stream::Config[:zipkin], service_name: "#{@name}-#{@group}", flush_interval: 1)
|
67
|
+
end
|
68
|
+
|
63
69
|
@state = Redis::Stream::State::RUNNING if options.include?("sync_start") && options["sync_start"]
|
64
70
|
setup_stream
|
65
71
|
|
@@ -67,15 +73,6 @@ class Redis
|
|
67
73
|
@logger.info "#{@consumer_id} - Last ID = #{@last_id}"
|
68
74
|
end
|
69
75
|
|
70
|
-
def trace(topic, span = nil, &block)
|
71
|
-
@tracer.trace(topic, span, &block)
|
72
|
-
end
|
73
|
-
|
74
|
-
def trace_error(msg, span, &block)
|
75
|
-
@tracer.trace_error(msg, span, &block)
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
76
|
# add: add a message to the stream
|
80
77
|
# @param [Object] data Any data you want to transmit
|
81
78
|
# @param [Hash{String->String}] Options
|
@@ -84,7 +81,7 @@ class Redis
|
|
84
81
|
def add(data = {}, options = {})
|
85
82
|
raise "Client isn't running" unless @state.eql?(Redis::Stream::State::RUNNING)
|
86
83
|
|
87
|
-
default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "cache_key" => nil}
|
84
|
+
default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "cache_key" => nil, "tracer" => nil}
|
88
85
|
options = default_options.merge(options)
|
89
86
|
|
90
87
|
type = options["type"]
|
@@ -104,7 +101,7 @@ class Redis
|
|
104
101
|
def sync_add(data = {}, options = {})
|
105
102
|
raise "Client isn't running" unless @state.eql?(Redis::Stream::State::RUNNING)
|
106
103
|
|
107
|
-
default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "time_out" => 5, "passthrough" => false, "cache_key" => nil}
|
104
|
+
default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "time_out" => 5, "passthrough" => false, "cache_key" => nil, "tracer" => nil}
|
108
105
|
options = default_options.merge(options)
|
109
106
|
|
110
107
|
to = options["to"]
|
@@ -114,7 +111,7 @@ class Redis
|
|
114
111
|
|
115
112
|
#@state = Redis::Stream::State::RUNNING
|
116
113
|
data_out = nil
|
117
|
-
add_id = add(data, "to" => to, "group" => group, "type" => options["type"], "cache_key" => options["cache_key"])
|
114
|
+
add_id = add(data, "to" => to, "group" => group, "type" => options["type"], "cache_key" => options["cache_key"], "tracer" => options['tracer'])
|
118
115
|
|
119
116
|
time = Time.now
|
120
117
|
|
@@ -188,14 +185,39 @@ class Redis
|
|
188
185
|
end
|
189
186
|
end
|
190
187
|
|
188
|
+
def trace(operation_name, parent_scope = nil)
|
189
|
+
# span = OpenTracing.start_span(operation_name)
|
190
|
+
# yield span if block_given?
|
191
|
+
# span.finish
|
192
|
+
|
193
|
+
# active_scope = OpenTracing.scope_manager.active
|
194
|
+
if parent_scope.is_a?(Zipkin::Scope)
|
195
|
+
OpenTracing.start_active_span(operation_name, child_of: parent_scope.span) do |scope|
|
196
|
+
yield scope if block_given?
|
197
|
+
end
|
198
|
+
else
|
199
|
+
OpenTracing.start_active_span(operation_name) do |scope|
|
200
|
+
yield scope if block_given?
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
191
204
|
|
205
|
+
def trace_error(operation_name, span = nil)
|
206
|
+
trace(operation_name, span)
|
207
|
+
end
|
192
208
|
private
|
193
209
|
|
194
210
|
def build_payload(data, options)
|
195
211
|
to = options['to']
|
196
212
|
group = options['group']
|
197
213
|
type = options['type']
|
198
|
-
|
214
|
+
tracer_data = {}
|
215
|
+
if options['tracer'].nil?
|
216
|
+
tracer_data = nil
|
217
|
+
else
|
218
|
+
tracer_span = options['tracer']
|
219
|
+
OpenTracing.inject(tracer_span.context, OpenTracing::FORMAT_TEXT_MAP, tracer_data)
|
220
|
+
end
|
199
221
|
payload = nil
|
200
222
|
|
201
223
|
unless @cache.nil?
|
@@ -212,6 +234,7 @@ class Redis
|
|
212
234
|
from_group: group,
|
213
235
|
to: @consumer_id,
|
214
236
|
to_group: @group,
|
237
|
+
tracer: tracer_data.to_json,
|
215
238
|
payload: @cache[cache_key].to_json
|
216
239
|
}
|
217
240
|
@logger.info("#{@consumer_id} - fetching from cache with key #{cache_key}")
|
@@ -230,6 +253,7 @@ class Redis
|
|
230
253
|
from_group: @group,
|
231
254
|
to: to,
|
232
255
|
to_group: group,
|
256
|
+
tracer: tracer_data.to_json,
|
233
257
|
payload: data.to_json
|
234
258
|
}
|
235
259
|
end
|
@@ -288,6 +312,12 @@ class Redis
|
|
288
312
|
id, data_out = result[@stream][0]
|
289
313
|
ack_count = @redis.xack(@stream, @group, id) if @group
|
290
314
|
|
315
|
+
tracer_data = JSON.parse(data_out["tracer"])
|
316
|
+
unless tracer_data.nil? || tracer_data.empty?
|
317
|
+
tracer_span = OpenTracing.extract(OpenTracing::FORMAT_TEXT_MAP, tracer_data)
|
318
|
+
data_out["tracer"] = OpenTracing.start_active_span(@consumer_id, child_of: tracer_span)
|
319
|
+
end
|
320
|
+
|
291
321
|
begin
|
292
322
|
data_out["payload"] = JSON.parse(data_out["payload"])
|
293
323
|
rescue Exception => e
|
@@ -303,7 +333,7 @@ class Redis
|
|
303
333
|
# end
|
304
334
|
# end
|
305
335
|
|
306
|
-
if
|
336
|
+
if data_out["from"].eql?(@consumer_id)
|
307
337
|
return false
|
308
338
|
end
|
309
339
|
|
data/lib/redis/stream/version.rb
CHANGED
data/redis-stream.gemspec
CHANGED
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-stream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mehmet Celik
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
19
|
version: '2.0'
|
19
|
-
name: bundler
|
20
|
-
prerelease: false
|
21
20
|
type: :development
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '10.0'
|
33
|
-
name: rake
|
34
|
-
prerelease: false
|
35
34
|
type: :development
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '5.0'
|
47
|
-
name: minitest
|
48
|
-
prerelease: false
|
49
48
|
type: :development
|
49
|
+
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: redis
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - '='
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: 4.1.3
|
61
|
-
name: redis
|
62
|
-
prerelease: false
|
63
62
|
type: :runtime
|
63
|
+
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 4.1.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: moneta
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
73
|
- - "~>"
|
73
74
|
- !ruby/object:Gem::Version
|
74
75
|
version: '1.2'
|
75
|
-
name: moneta
|
76
|
-
prerelease: false
|
77
76
|
type: :runtime
|
77
|
+
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.2'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
+
name: multi_json
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
87
|
- - "~>"
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: '1.14'
|
89
|
-
name: multi_json
|
90
|
-
prerelease: false
|
91
90
|
type: :runtime
|
91
|
+
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.14'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
+
name: zipkin
|
98
99
|
requirement: !ruby/object:Gem::Requirement
|
99
100
|
requirements:
|
100
101
|
- - "~>"
|
101
102
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
103
|
-
name: zipkin-tracer
|
104
|
-
prerelease: false
|
103
|
+
version: 1.6.1
|
105
104
|
type: :runtime
|
105
|
+
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 1.6.1
|
111
111
|
description: Simple stream library using Redis Streams
|
112
112
|
email:
|
113
113
|
- mehmet@celik.be
|
@@ -145,7 +145,7 @@ metadata:
|
|
145
145
|
homepage_uri: https://github.com/mehmetc/redis-stream
|
146
146
|
source_code_uri: https://github.com/mehmetc/redis-stream
|
147
147
|
changelog_uri: https://github.com/mehmetc/redis-stream
|
148
|
-
post_install_message:
|
148
|
+
post_install_message:
|
149
149
|
rdoc_options: []
|
150
150
|
require_paths:
|
151
151
|
- lib
|
@@ -160,9 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '0'
|
162
162
|
requirements: []
|
163
|
-
|
164
|
-
|
165
|
-
signing_key:
|
163
|
+
rubygems_version: 3.0.6
|
164
|
+
signing_key:
|
166
165
|
specification_version: 4
|
167
166
|
summary: Sugar coating Redis Streams
|
168
167
|
test_files: []
|