eventq_aws 1.11.2 → 1.12.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/lib/eventq_aws/aws_eventq_client.rb +10 -5
- data/lib/eventq_aws/aws_queue_client.rb +1 -1
- data/lib/eventq_aws/aws_queue_worker.rb +29 -29
- data/lib/eventq_aws/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7afc5b68dc722ef6547d19b6455d9100cd51628d
|
4
|
+
data.tar.gz: 5f0cb52ceecb844a317d405e0063c6d8d88a8b7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df970ec2572e071a2d1288a6353702e314544083897c42731f4d2ab9adea3582451143eba631a6352cd4a5401ca3c35faea5fe638c4142753f38236c59bf86f6
|
7
|
+
data.tar.gz: 15ba056beb5de87a6ae2153ca541dc45d92bba49057e0b48e803aaa7c2962223cb731fa32222c0ba4b8c49e23a1413a176d15f783f6c961427f7c99d920c6f2e
|
@@ -34,10 +34,14 @@ module EventQ
|
|
34
34
|
true
|
35
35
|
end
|
36
36
|
|
37
|
-
def
|
37
|
+
def publish(topic:, event:, context: {})
|
38
|
+
raise_event(topic, event, context)
|
39
|
+
end
|
40
|
+
|
41
|
+
def raise_event(event_type, event, context = {})
|
38
42
|
register_event(event_type)
|
39
43
|
|
40
|
-
with_prepared_message(event_type, event) do |message|
|
44
|
+
with_prepared_message(event_type, event, context) do |message|
|
41
45
|
|
42
46
|
response = @client.sns.publish(
|
43
47
|
topic_arn: topic_arn(event_type),
|
@@ -53,9 +57,9 @@ module EventQ
|
|
53
57
|
end
|
54
58
|
end
|
55
59
|
|
56
|
-
def raise_event_in_queue(event_type, event, queue, delay)
|
60
|
+
def raise_event_in_queue(event_type, event, queue, delay, context = {})
|
57
61
|
queue_url = @client.get_queue_url(queue)
|
58
|
-
with_prepared_message(event_type, event) do |message|
|
62
|
+
with_prepared_message(event_type, event, context) do |message|
|
59
63
|
|
60
64
|
response = @client.sqs.send_message(
|
61
65
|
queue_url: queue_url,
|
@@ -77,10 +81,11 @@ module EventQ
|
|
77
81
|
|
78
82
|
private
|
79
83
|
|
80
|
-
def with_prepared_message(event_type, event)
|
84
|
+
def with_prepared_message(event_type, event, context)
|
81
85
|
qm = new_message
|
82
86
|
qm.content = event
|
83
87
|
qm.type = event_type
|
88
|
+
qm.context = context
|
84
89
|
|
85
90
|
if EventQ::Configuration.signature_secret != nil
|
86
91
|
provider = @signature_manager.get_provider(EventQ::Configuration.signature_provider)
|
@@ -29,7 +29,7 @@ module EventQ
|
|
29
29
|
|
30
30
|
def start(queue, options = {}, &block)
|
31
31
|
|
32
|
-
EventQ.
|
32
|
+
EventQ.logger.info("[#{self.class}] - Preparing to start listening for messages.")
|
33
33
|
|
34
34
|
configure(queue, options)
|
35
35
|
|
@@ -44,7 +44,7 @@ module EventQ
|
|
44
44
|
"[#{self.class} #start] - Listening for messages on queue: #{queue.name}, Queue Url: #{client.get_queue_url(queue)}, Queue arn: #{client.get_queue_arn(queue)}"
|
45
45
|
end
|
46
46
|
|
47
|
-
EventQ.
|
47
|
+
EventQ.logger.info("[#{self.class}] - Listening for messages.")
|
48
48
|
|
49
49
|
@forks = []
|
50
50
|
|
@@ -99,9 +99,9 @@ module EventQ
|
|
99
99
|
gc_flush
|
100
100
|
|
101
101
|
if !has_message_received
|
102
|
-
EventQ.
|
102
|
+
EventQ.logger.debug { "[#{self.class}] - No message received." }
|
103
103
|
if @sleep > 0
|
104
|
-
EventQ.
|
104
|
+
EventQ.logger.debug { "[#{self.class}] - Sleeping for #{@sleep} seconds" }
|
105
105
|
sleep(@sleep)
|
106
106
|
end
|
107
107
|
end
|
@@ -168,45 +168,45 @@ module EventQ
|
|
168
168
|
|
169
169
|
def call_on_error_block(error:, message: nil)
|
170
170
|
if @on_error_block
|
171
|
-
EventQ.
|
171
|
+
EventQ.logger.debug { "[#{self.class}] - Executing on_error block." }
|
172
172
|
begin
|
173
173
|
@on_error_block.call(error, message)
|
174
174
|
rescue => e
|
175
|
-
EventQ.
|
175
|
+
EventQ.logger.error("[#{self.class}] - An error occurred executing the on_error block. Error: #{e}")
|
176
176
|
end
|
177
177
|
else
|
178
|
-
EventQ.
|
178
|
+
EventQ.logger.debug { "[#{self.class}] - No on_error block specified to execute." }
|
179
179
|
end
|
180
180
|
end
|
181
181
|
|
182
182
|
def call_on_retry_exceeded_block(message)
|
183
183
|
if @on_retry_exceeded_block != nil
|
184
|
-
EventQ.
|
184
|
+
EventQ.logger.debug { "[#{self.class}] - Executing on_retry_exceeded block." }
|
185
185
|
begin
|
186
186
|
@on_retry_exceeded_block.call(message)
|
187
187
|
rescue => e
|
188
|
-
EventQ.
|
188
|
+
EventQ.logger.error("[#{self.class}] - An error occurred executing the on_retry_exceeded block. Error: #{e}")
|
189
189
|
end
|
190
190
|
else
|
191
|
-
EventQ.
|
191
|
+
EventQ.logger.debug { "[#{self.class}] - No on_retry_exceeded block specified." }
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
195
|
def call_on_retry_block(message)
|
196
196
|
if @on_retry_block
|
197
|
-
EventQ.
|
197
|
+
EventQ.logger.debug { "[#{self.class}] - Executing on_retry block." }
|
198
198
|
begin
|
199
199
|
@on_retry_block.call(message, abort)
|
200
200
|
rescue => e
|
201
|
-
EventQ.
|
201
|
+
EventQ.logger.error("[#{self.class}] - An error occurred executing the on_retry block. Error: #{e}")
|
202
202
|
end
|
203
203
|
else
|
204
|
-
EventQ.
|
204
|
+
EventQ.logger.debug { "[#{self.class}] - No on_retry block specified." }
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
208
208
|
def stop
|
209
|
-
EventQ.
|
209
|
+
EventQ.logger.info("[#{self.class}] - Stopping.")
|
210
210
|
@is_running = false
|
211
211
|
@threads.each { |thr| thr.join }
|
212
212
|
return true
|
@@ -250,14 +250,14 @@ module EventQ
|
|
250
250
|
payload = JSON.load(msg.body)
|
251
251
|
message = deserialize_message(payload[MESSAGE])
|
252
252
|
|
253
|
-
message_args = EventQ::MessageArgs.new(message.type, retry_attempts)
|
253
|
+
message_args = EventQ::MessageArgs.new(message.type, retry_attempts, message.context)
|
254
254
|
|
255
|
-
EventQ.
|
255
|
+
EventQ.logger.info("[#{self.class}] - Message received. Retry Attempts: #{retry_attempts}")
|
256
256
|
|
257
257
|
@signature_provider_manager.validate_signature(message: message, queue: queue)
|
258
258
|
|
259
259
|
if(!EventQ::NonceManager.is_allowed?(message.id))
|
260
|
-
EventQ.
|
260
|
+
EventQ.logger.info("[#{self.class}] - Duplicate Message received. Dropping message.")
|
261
261
|
client.sqs.delete_message({ queue_url: q, receipt_handle: msg.receipt_handle })
|
262
262
|
return false
|
263
263
|
end
|
@@ -268,15 +268,15 @@ module EventQ
|
|
268
268
|
block.call(message.content, message_args)
|
269
269
|
|
270
270
|
if message_args.abort == true
|
271
|
-
EventQ.
|
271
|
+
EventQ.logger.info("[#{self.class}] - Message aborted.")
|
272
272
|
else
|
273
273
|
#accept the message as processed
|
274
274
|
client.sqs.delete_message({ queue_url: q, receipt_handle: msg.receipt_handle })
|
275
|
-
EventQ.
|
275
|
+
EventQ.logger.info("[#{self.class}] - Message acknowledged.")
|
276
276
|
end
|
277
277
|
|
278
278
|
rescue => e
|
279
|
-
EventQ.
|
279
|
+
EventQ.logger.error("[#{self.class}] - An unhandled error happened while attempting to process a queue message. Error: #{e} | Backtrace: #{e.backtrace}")
|
280
280
|
error = true
|
281
281
|
call_on_error_block(error: e, message: message)
|
282
282
|
end
|
@@ -295,14 +295,14 @@ module EventQ
|
|
295
295
|
|
296
296
|
if !queue.allow_retry || retry_attempts >= queue.max_retry_attempts
|
297
297
|
|
298
|
-
EventQ.
|
298
|
+
EventQ.logger.info("[#{self.class}] - Message rejected removing from queue. Message: #{serialize_message(message)}")
|
299
299
|
|
300
300
|
#remove the message from the queue so that it does not get retried again
|
301
301
|
client.sqs.delete_message({ queue_url: q, receipt_handle: msg.receipt_handle })
|
302
302
|
|
303
303
|
if retry_attempts >= queue.max_retry_attempts
|
304
304
|
|
305
|
-
EventQ.
|
305
|
+
EventQ.logger.info("[#{self.class}] - Message retry attempt limit exceeded.")
|
306
306
|
call_on_retry_exceeded_block(message)
|
307
307
|
|
308
308
|
end
|
@@ -311,26 +311,26 @@ module EventQ
|
|
311
311
|
|
312
312
|
retry_attempts += 1
|
313
313
|
|
314
|
-
EventQ.
|
314
|
+
EventQ.logger.info("[#{self.class}] - Message rejected requesting retry. Attempts: #{retry_attempts}")
|
315
315
|
|
316
316
|
if queue.allow_retry_back_off == true
|
317
|
-
EventQ.
|
317
|
+
EventQ.logger.debug { "[#{self.class}] - Calculating message back off retry delay. Attempts: #{retry_attempts} * Delay: #{queue.retry_delay}" }
|
318
318
|
visibility_timeout = (queue.retry_delay * retry_attempts) / 1000
|
319
319
|
if visibility_timeout > (queue.max_retry_delay / 1000)
|
320
|
-
EventQ.
|
320
|
+
EventQ.logger.debug { "[#{self.class}] - Max message back off retry delay reached." }
|
321
321
|
visibility_timeout = queue.max_retry_delay / 1000
|
322
322
|
end
|
323
323
|
else
|
324
|
-
EventQ.
|
324
|
+
EventQ.logger.debug { "[#{self.class}] - Setting fixed retry delay for message." }
|
325
325
|
visibility_timeout = queue.retry_delay / 1000
|
326
326
|
end
|
327
327
|
|
328
328
|
if visibility_timeout > 43200
|
329
|
-
EventQ.
|
329
|
+
EventQ.logger.debug { "[#{self.class}] - AWS max visibility timeout of 12 hours has been exceeded. Setting message retry delay to 12 hours." }
|
330
330
|
visibility_timeout = 43200
|
331
331
|
end
|
332
332
|
|
333
|
-
EventQ.
|
333
|
+
EventQ.logger.debug { "[#{self.class}] - Sending message for retry. Message TTL: #{visibility_timeout}" }
|
334
334
|
client.sqs.change_message_visibility({
|
335
335
|
queue_url: q, # required
|
336
336
|
receipt_handle: msg.receipt_handle, # required
|
@@ -372,7 +372,7 @@ module EventQ
|
|
372
372
|
@queue_poll_wait = options[:queue_poll_wait]
|
373
373
|
end
|
374
374
|
|
375
|
-
EventQ.
|
375
|
+
EventQ.logger.info("[#{self.class}] - Configuring. Process Count: #{@fork_count} | Thread Count: #{@thread_count} | Interval Sleep: #{@sleep} | GC Flush Interval: #{@gc_flush_interval} | Queue Poll Wait: #{@queue_poll_wait}.")
|
376
376
|
|
377
377
|
return true
|
378
378
|
|
data/lib/eventq_aws/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventq_aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaughanbrittonsage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|