mimi-messaging-sqs_sns 0.8.0 → 0.8.1
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/CHANGELOG.md +5 -0
- data/TODO.md +2 -2
- data/lib/mimi/messaging/sqs_sns/adapter.rb +2 -16
- data/lib/mimi/messaging/sqs_sns/consumer.rb +22 -5
- data/lib/mimi/messaging/sqs_sns/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8ca2b61a4f7cc802b628397b74d45a19f81dd50cf7d285bfc813922e17e7327
|
4
|
+
data.tar.gz: fea7216f18b7707cedefaac1090349791c01f35b76f0a3019531039e28e8a39e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4734aef7603919fe1485b1403fe63cfe3751b25ca0c753336b1567b524817ad68d9a0255fb14a993f365d58963b3a5a894bb02b338eac19d2af01303455510b
|
7
|
+
data.tar.gz: 017f5eb8d84cb0b10196c6a76fee01b5c1f3909c3b3eca2883e729992b02370f9be9827639858cbcb7e68beb02c35e4ac6cc9b5f40726b9e8faaccf5c8ee7eb6
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## UNRELEASED
|
4
4
|
|
5
|
+
## v0.8.1
|
6
|
+
|
7
|
+
* [#5](https://github.com/kukushkin/mimi-messaging-sqs_sns/pull/5)
|
8
|
+
* Refactored worker pool based message processing and error handling
|
9
|
+
|
5
10
|
## v0.8.0
|
6
11
|
|
7
12
|
* [#3](https://github.com/kukushkin/mimi-messaging-sqs_sns/pull/3)
|
data/TODO.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
List of missing features planned for future releases.
|
4
4
|
|
5
5
|
* [X] Log error and recover if the reply cannot be sent
|
6
|
-
* [
|
7
|
-
* [
|
6
|
+
* [X] Threadsafe TimeoutQueue
|
7
|
+
* [X] Multithreaded consumers
|
8
8
|
* [ ] Subscribe to topic without a queue (Temporary queues)
|
9
9
|
|
@@ -186,14 +186,7 @@ module Mimi
|
|
186
186
|
opts = opts.dup
|
187
187
|
queue_url = find_or_create_queue(queue_name)
|
188
188
|
@consumers << Consumer.new(self, queue_url) do |m|
|
189
|
-
|
190
|
-
process_request_message(processor, m)
|
191
|
-
end
|
192
|
-
rescue Concurrent::RejectedExecutionError
|
193
|
-
# the backlog is overflown, put the message back
|
194
|
-
Mimi::Messaging.log "Worker pool backlog is full, nack-ing the message " \
|
195
|
-
"(workers:#{worker_pool.length}, backlog:#{worker_pool.queue_length})"
|
196
|
-
raise Mimi::Messaging::NACK # exception raised in Consumer thread
|
189
|
+
process_request_message(processor, m)
|
197
190
|
end
|
198
191
|
end
|
199
192
|
|
@@ -210,14 +203,7 @@ module Mimi
|
|
210
203
|
queue_url = find_or_create_queue(queue_name)
|
211
204
|
subscribe_topic_queue(topic_arn, queue_url)
|
212
205
|
@consumers << Consumer.new(self, queue_url) do |m|
|
213
|
-
|
214
|
-
process_event_message(processor, m)
|
215
|
-
end
|
216
|
-
rescue Concurrent::RejectedExecutionError
|
217
|
-
# the backlog is overflown, put the message back
|
218
|
-
Mimi::Messaging.log "Worker pool backlog is full, nack-ing the message " \
|
219
|
-
"(workers:#{worker_pool.length}, backlog:#{worker_pool.queue_length})"
|
220
|
-
raise Mimi::Messaging::NACK # exception raised in Consumer thread
|
206
|
+
process_event_message(processor, m)
|
221
207
|
end
|
222
208
|
end
|
223
209
|
|
@@ -48,14 +48,17 @@ module Mimi
|
|
48
48
|
return unless message
|
49
49
|
|
50
50
|
Mimi::Messaging.log "Read message from: #{queue_url}"
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
adapter.worker_pool.post do
|
52
|
+
process_message(adapter, queue_url, message, block)
|
53
|
+
end
|
54
|
+
rescue Concurrent::RejectedExecutionError
|
55
|
+
# the backlog is overflown, put the message back
|
56
|
+
Mimi::Messaging.log "Worker pool backlog is full, nack-ing the message " \
|
57
|
+
"(workers:#{adapter.worker_pool.length}, backlog:#{adapter.worker_pool.queue_length})"
|
55
58
|
nack_message(adapter, queue_url, message)
|
56
59
|
rescue StandardError => e
|
57
60
|
Mimi::Messaging.logger&.error(
|
58
|
-
"#{self.class}: failed to read
|
61
|
+
"#{self.class}: failed to read or process message from: #{queue_url}," \
|
59
62
|
" error: (#{e.class}) #{e}"
|
60
63
|
)
|
61
64
|
end
|
@@ -73,6 +76,20 @@ module Mimi
|
|
73
76
|
raise Mimi::Messaging::ConnectionError, "Unexpected number of messages read"
|
74
77
|
end
|
75
78
|
|
79
|
+
def process_message(adapter, queue_url, message, block)
|
80
|
+
block.call(message)
|
81
|
+
ack_message(adapter, queue_url, message)
|
82
|
+
rescue Mimi::Messaging::NACK
|
83
|
+
Mimi::Messaging.log "NACK-ing message from: #{queue_url}"
|
84
|
+
nack_message(adapter, queue_url, message)
|
85
|
+
rescue StandardError => e
|
86
|
+
Mimi::Messaging.logger&.error(
|
87
|
+
"#{self.class}: failed to process message from: #{queue_url}," \
|
88
|
+
" error: (#{e.class}) #{e}"
|
89
|
+
)
|
90
|
+
# NOTE: message is neither ACKed or NACKed
|
91
|
+
end
|
92
|
+
|
76
93
|
# ACK-ing the message indicates successfull processing of it
|
77
94
|
# and removes the message from the queue
|
78
95
|
#
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mimi-messaging-sqs_sns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mimi-messaging
|