eventq_aws 1.11.2 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|