istox 0.1.130.pre.2 → 0.1.130.pre.3
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/.idea/istox-gem.iml +2 -1689
- data/Gemfile.lock +2 -2
- data/lib/istox/helpers/bunny_boot.rb +6 -0
- data/lib/istox/helpers/publisher.rb +2 -5
- data/lib/istox/helpers/subscriber.rb +5 -3
- data/lib/istox/version.rb +1 -1
- metadata +2 -2
data/Gemfile.lock
CHANGED
@@ -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)
|
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)
|
112
112
|
google-protobuf (~> 3.11)
|
113
113
|
googleapis-common-protos-types (~> 1.0)
|
114
114
|
grpc-tools (1.27.0)
|
@@ -142,6 +142,12 @@ module Istox
|
|
142
142
|
nil
|
143
143
|
end
|
144
144
|
|
145
|
+
def queue_routing_key(consumer_key)
|
146
|
+
queue_config_from_consumer_key!(consumer_key)['routing_key'] || (queue_name consumer_key)
|
147
|
+
rescue
|
148
|
+
nil
|
149
|
+
end
|
150
|
+
|
145
151
|
def queue_exclusive(consumer_key)
|
146
152
|
queue_config_from_consumer_key!(consumer_key)['exclusive'] || false
|
147
153
|
rescue
|
@@ -13,7 +13,7 @@ module Istox
|
|
13
13
|
# publish_confirm: true/false
|
14
14
|
# }
|
15
15
|
def publish(exchange: nil, routing_key: nil, binding:nil, binding_suffix:nil, message:, options: {})
|
16
|
-
|
16
|
+
|
17
17
|
if exchange.nil? && routing_key.nil?
|
18
18
|
raise 'Exchange and routing key cannot be nil at the same time.' if binding.nil?
|
19
19
|
exchange = ::Istox::BunnyBoot.binding_exchange_id(binding)
|
@@ -24,7 +24,7 @@ module Istox
|
|
24
24
|
|
25
25
|
exchange = ::Istox::BunnyBoot.search_exchange_of_routing_key!(routing_key) if routing_key.present? && exchange.nil?
|
26
26
|
ex = exchange(exchange)
|
27
|
-
options[:routing_key] = routing_key unless routing_key.nil?
|
27
|
+
options[:routing_key] = routing_key unless routing_key.nil? || options[:routing_key]
|
28
28
|
|
29
29
|
do_publish ex, options, message
|
30
30
|
end
|
@@ -197,7 +197,6 @@ module Istox
|
|
197
197
|
end
|
198
198
|
|
199
199
|
def do_publish(ex, options = {}, message)
|
200
|
-
log.debug '************** do_publish ***************'
|
201
200
|
eid = ::Istox::BunnyBoot.eid ex
|
202
201
|
ch = ex.channel
|
203
202
|
channel_id = ch.id
|
@@ -217,7 +216,6 @@ module Istox
|
|
217
216
|
end
|
218
217
|
|
219
218
|
if confirm && mode == 0
|
220
|
-
log.debug '************** Confirm && mode == 0 ***************'
|
221
219
|
success = ex.channel.wait_for_confirms
|
222
220
|
if success
|
223
221
|
# ::Istox::BunnyBoot.del_tracker_on_channel channel_id
|
@@ -233,7 +231,6 @@ module Istox
|
|
233
231
|
ret
|
234
232
|
end
|
235
233
|
end
|
236
|
-
log.debug '******************* End of do_publish ******************'
|
237
234
|
rescue Bunny::ConnectionClosedError => e
|
238
235
|
log.debug "Publish fails due to #{e}"
|
239
236
|
sleep 1
|
@@ -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] = ::Istox::BunnyBoot.queue_routing_key consumer_key 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': ::Istox::BunnyBoot.queue_routing_key(consumer_key),
|
92
92
|
'x-message-ttl': (::Istox::BunnyBoot.queue_retry_gap consumer_key)
|
93
93
|
})
|
94
94
|
unless exchange_name.nil?
|
@@ -163,7 +163,9 @@ module Istox
|
|
163
163
|
log.debug "Consumer Retry count: #{retry_count}"
|
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
|
-
::Istox::BunnyBoot.publish(exchange_retry,
|
166
|
+
::Istox::BunnyBoot.publish(exchange_retry, processing_paylod, routing_key: "#{queue_name}.retry", priority: retry_count, type: 'dlx')
|
167
|
+
else
|
168
|
+
log.info ""
|
167
169
|
end
|
168
170
|
=begin
|
169
171
|
# 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.pre.
|
4
|
+
version: 0.1.130.pre.3
|
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-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|