istox 0.1.130.pre.3 → 0.1.130
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.idea/.rakeTasks +1 -1
- data/.idea/istox-gem.iml +1690 -2
- data/Gemfile.lock +3 -3
- data/lib/istox/helpers/bunny_boot.rb +6 -3
- data/lib/istox/helpers/messaging.rb +0 -12
- data/lib/istox/helpers/publisher.rb +7 -9
- data/lib/istox/helpers/subscriber.rb +5 -7
- data/lib/istox/version.rb +1 -1
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
istox (0.1.130
|
4
|
+
istox (0.1.130)
|
5
5
|
awesome_print
|
6
6
|
binding_of_caller
|
7
7
|
bunny (>= 2.12.0)
|
@@ -97,7 +97,7 @@ GEM
|
|
97
97
|
ffi (1.12.2)
|
98
98
|
globalid (0.4.2)
|
99
99
|
activesupport (>= 4.2.0)
|
100
|
-
google-protobuf (3.11.4)
|
100
|
+
google-protobuf (3.11.4-universal-darwin)
|
101
101
|
googleapis-common-protos-types (1.0.4)
|
102
102
|
google-protobuf (~> 3.0)
|
103
103
|
graphlient (0.3.7)
|
@@ -108,7 +108,7 @@ GEM
|
|
108
108
|
graphql-client (0.16.0)
|
109
109
|
activesupport (>= 3.0)
|
110
110
|
graphql (~> 1.8)
|
111
|
-
grpc (1.27.0)
|
111
|
+
grpc (1.27.0-universal-darwin)
|
112
112
|
google-protobuf (~> 3.11)
|
113
113
|
googleapis-common-protos-types (~> 1.0)
|
114
114
|
grpc-tools (1.27.0)
|
@@ -118,7 +118,6 @@ module Istox
|
|
118
118
|
|
119
119
|
name = "#{prefix}#{delimiter}#{name}" unless prefix.nil?
|
120
120
|
name = "#{name}#{delimiter}#{suffix}" unless suffix.nil?
|
121
|
-
log.debug "name is #{name}"
|
122
121
|
name
|
123
122
|
rescue
|
124
123
|
nil
|
@@ -281,9 +280,9 @@ module Istox
|
|
281
280
|
# But each retry, there is new delivery_tag that should be updated
|
282
281
|
id = "#{channel_id.to_s}:#{delivery_tag.to_s}"
|
283
282
|
|
284
|
-
::Istox::RedisBoot.sets("#{id}:payload", payload
|
283
|
+
::Istox::RedisBoot.sets("#{id}:payload", JSON.dump(payload), 4)
|
285
284
|
::Istox::RedisBoot.sets("#{id}:eid", eid.to_s, 4)
|
286
|
-
::Istox::RedisBoot.sets("#{id}:options", options
|
285
|
+
::Istox::RedisBoot.sets("#{id}:options", JSON.dump(options), 4)
|
287
286
|
end
|
288
287
|
|
289
288
|
def find_tracker_on_channel(channel_id, delivery_tag, key)
|
@@ -320,6 +319,10 @@ module Istox
|
|
320
319
|
ex.type
|
321
320
|
end
|
322
321
|
|
322
|
+
def cacheMsg(suffix, msg)
|
323
|
+
::Istox::RedisBoot.sets("drop_msg_#{suffix}", JSON.dump(msg), 7)
|
324
|
+
end
|
325
|
+
|
323
326
|
private
|
324
327
|
|
325
328
|
def data
|
@@ -26,9 +26,6 @@ module Istox
|
|
26
26
|
subject: subject || 'Message from iSTOX',
|
27
27
|
body: content
|
28
28
|
}
|
29
|
-
},
|
30
|
-
options: {
|
31
|
-
confirm: 0
|
32
29
|
}
|
33
30
|
)
|
34
31
|
end
|
@@ -54,9 +51,6 @@ module Istox
|
|
54
51
|
template_name: template_name,
|
55
52
|
template_data_arr_json: template_data_arr.to_json
|
56
53
|
}
|
57
|
-
},
|
58
|
-
options: {
|
59
|
-
confirm: 0
|
60
54
|
}
|
61
55
|
)
|
62
56
|
end
|
@@ -92,9 +86,6 @@ module Istox
|
|
92
86
|
body: content,
|
93
87
|
attachments_json: attachments&.to_json
|
94
88
|
}
|
95
|
-
},
|
96
|
-
options: {
|
97
|
-
confirm: 0
|
98
89
|
}
|
99
90
|
)
|
100
91
|
end
|
@@ -126,9 +117,6 @@ module Istox
|
|
126
117
|
template_data_arr_json: template_data_arr.to_json,
|
127
118
|
attachments_json: attachments&.to_json
|
128
119
|
}
|
129
|
-
},
|
130
|
-
options: {
|
131
|
-
confirm: 0
|
132
120
|
}
|
133
121
|
)
|
134
122
|
end
|
@@ -87,7 +87,7 @@ module Istox
|
|
87
87
|
::Istox::BunnyBoot.del_tracker_on_channel @channel[threadId]['confirm-1'].id
|
88
88
|
else
|
89
89
|
@channel[threadId]['confirm-1'].nacked_set.each do |n|
|
90
|
-
log.debug
|
90
|
+
log.debug("Publish Error[Async #{threadId}]: UNACK delivery tag is #{n}, republish message")
|
91
91
|
eid = ::Istox::BunnyBoot.find_tracker_on_channel @channel[threadId]['confirm-1'].id, n, 'eid'
|
92
92
|
payload = ::Istox::BunnyBoot.find_tracker_on_channel @channel[threadId]['confirm-1'].id, n, 'payload'
|
93
93
|
payload = JSON.dump payload unless payload.nil?
|
@@ -218,17 +218,15 @@ module Istox
|
|
218
218
|
if confirm && mode == 0
|
219
219
|
success = ex.channel.wait_for_confirms
|
220
220
|
if success
|
221
|
-
|
222
|
-
0
|
221
|
+
::Istox::BunnyBoot.del_tracker_on_channel channel_id
|
223
222
|
else
|
224
|
-
ret = []
|
225
223
|
ex.channel.nacked_set.each do |n|
|
226
|
-
log.debug("
|
224
|
+
log.debug("Publish Error: UNACK delivery tag is #{n}, republish message")
|
227
225
|
options = ::Istox::BunnyBoot.find_tracker_on_channel(channel_id, n, 'options')
|
228
|
-
options = JSON.
|
229
|
-
|
226
|
+
options = JSON.parse(options, :symbolize_names => true)
|
227
|
+
options[:delivery_tag] = n
|
228
|
+
do_publish(ex, options, message)
|
230
229
|
end
|
231
|
-
ret
|
232
230
|
end
|
233
231
|
end
|
234
232
|
rescue Bunny::ConnectionClosedError => e
|
@@ -236,7 +234,7 @@ module Istox
|
|
236
234
|
sleep 1
|
237
235
|
do_publish(ex,options,message)
|
238
236
|
rescue => e
|
239
|
-
log.debug "
|
237
|
+
log.debug "Error happens: #{e}"
|
240
238
|
end
|
241
239
|
end
|
242
240
|
end
|
@@ -76,7 +76,7 @@ module Istox
|
|
76
76
|
|
77
77
|
# Bind queue to exchange
|
78
78
|
queue_options = {}
|
79
|
-
queue_options[:routing_key] =
|
79
|
+
queue_options[:routing_key] = queue_name if exchange_type == 'direct' || exchange_type == 'topic'
|
80
80
|
queue.bind exchange, queue_options
|
81
81
|
end
|
82
82
|
|
@@ -88,7 +88,7 @@ module Istox
|
|
88
88
|
end
|
89
89
|
retry_queue = active_channel.queue("#{queue_name}.retry", arguments: {
|
90
90
|
'x-dead-letter-exchange': letter_exchange,
|
91
|
-
'x-dead-letter-routing-key':
|
91
|
+
'x-dead-letter-routing-key': "#{queue_name}",
|
92
92
|
'x-message-ttl': (::Istox::BunnyBoot.queue_retry_gap consumer_key)
|
93
93
|
})
|
94
94
|
unless exchange_name.nil?
|
@@ -115,7 +115,7 @@ module Istox
|
|
115
115
|
# Initiate klass
|
116
116
|
ruby_class = ::Istox::BunnyBoot.ruby_class consumer_key
|
117
117
|
@workers = {} if @workers.nil?
|
118
|
-
unless
|
118
|
+
unless block || @workers[ruby_class]
|
119
119
|
klass = Object.const_get(
|
120
120
|
'::' + (ruby_class.nil? ? "#{consumer_key.to_s.underscore}_consumer" : ruby_class).camelize
|
121
121
|
)
|
@@ -134,7 +134,6 @@ module Istox
|
|
134
134
|
log.debug "Delivery_info: #{delivery_info}"
|
135
135
|
log.debug "Metadata: #{metadata}"
|
136
136
|
log.debug "Payload: #{payload}"
|
137
|
-
log.debug "Redelivered Message?: #{delivery_info.redelivered}"
|
138
137
|
|
139
138
|
# For retried message, if reaching retry count limit, return ack anyway
|
140
139
|
# If retry limit is -1, no retry limit
|
@@ -144,12 +143,13 @@ module Istox
|
|
144
143
|
processing_paylod = JSON.parse(payload)
|
145
144
|
processing_paylod = ::Istox::CommonHelper.to_open_struct(processing_paylod) if ::Istox::BunnyBoot.queue_worker_param_format(consumer_key) == 'open_struct'
|
146
145
|
log.info "Processing in consumer: #{klass}, paylod: #{processing_paylod.to_h.inspect}"
|
147
|
-
|
148
146
|
if @workers[ruby_class].nil?
|
149
147
|
result = block.call(processing_paylod, metadata, delivery_info) unless block.nil?
|
150
148
|
else
|
151
149
|
result = @workers[ruby_class].process(processing_paylod, metadata, delivery_info)
|
152
150
|
end
|
151
|
+
else
|
152
|
+
::Istox::BunnyBoot.cacheMsg(Time.now.to_s, {queue: queue.name, payload: payload})
|
153
153
|
end
|
154
154
|
# active_channel.ack(delivery_info.delivery_tag) if manual_ack
|
155
155
|
rescue StandardError => e
|
@@ -164,8 +164,6 @@ module Istox
|
|
164
164
|
# @option opts [Integer] :priority Message priority, 0 to 9. Not used by RabbitMQ, only applications
|
165
165
|
# here we adopt the unused priority as remaining retry_count
|
166
166
|
::Istox::BunnyBoot.publish(exchange_retry, processing_paylod, routing_key: "#{queue_name}.retry", priority: retry_count, type: 'dlx')
|
167
|
-
else
|
168
|
-
log.info ""
|
169
167
|
end
|
170
168
|
=begin
|
171
169
|
# For redelivered message, call 'reject' not 'nack' in order to reschedule message to tail not head of queue
|
data/lib/istox/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: istox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.130
|
4
|
+
version: 0.1.130
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Siong Leng
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -442,9 +442,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
442
442
|
version: '0'
|
443
443
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
444
444
|
requirements:
|
445
|
-
- - "
|
445
|
+
- - ">="
|
446
446
|
- !ruby/object:Gem::Version
|
447
|
-
version:
|
447
|
+
version: '0'
|
448
448
|
requirements: []
|
449
449
|
rubygems_version: 3.0.8
|
450
450
|
signing_key:
|