eventq 2.0.0.rc1
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 +7 -0
- data/README.md +336 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/eventq/aws.rb +38 -0
- data/lib/eventq/eventq_aws/README.md +53 -0
- data/lib/eventq/eventq_aws/aws_eventq_client.rb +120 -0
- data/lib/eventq/eventq_aws/aws_queue_client.rb +64 -0
- data/lib/eventq/eventq_aws/aws_queue_manager.rb +68 -0
- data/lib/eventq/eventq_aws/aws_queue_worker.rb +168 -0
- data/lib/eventq/eventq_aws/aws_status_checker.rb +25 -0
- data/lib/eventq/eventq_aws/aws_subscription_manager.rb +65 -0
- data/lib/eventq/eventq_aws/jruby/aws_queue_worker.rb +370 -0
- data/lib/eventq/eventq_aws/sns.rb +64 -0
- data/lib/eventq/eventq_aws/sqs.rb +112 -0
- data/lib/eventq/eventq_base/configuration.rb +33 -0
- data/lib/eventq/eventq_base/event_raised_exchange.rb +7 -0
- data/lib/eventq/eventq_base/event_raised_queue.rb +7 -0
- data/lib/eventq/eventq_base/eventq_client_contract.rb +9 -0
- data/lib/eventq/eventq_base/eventq_logger.rb +28 -0
- data/lib/eventq/eventq_base/exceptions/invalid_signature_exception.rb +9 -0
- data/lib/eventq/eventq_base/exceptions/worker_thread_error.rb +10 -0
- data/lib/eventq/eventq_base/exceptions.rb +2 -0
- data/lib/eventq/eventq_base/exchange.rb +5 -0
- data/lib/eventq/eventq_base/message_args.rb +23 -0
- data/lib/eventq/eventq_base/nonce_manager.rb +57 -0
- data/lib/eventq/eventq_base/queue.rb +27 -0
- data/lib/eventq/eventq_base/queue_message.rb +31 -0
- data/lib/eventq/eventq_base/queue_worker_contract.rb +23 -0
- data/lib/eventq/eventq_base/serialization_providers/binary_serialization_provider.rb +15 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/array_writer.rb +20 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/attribute_writer.rb +24 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/class_writer.rb +20 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/date_time_writer.rb +33 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/date_writer.rb +22 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/hash_writer.rb +18 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/rational_writer.rb +20 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/serializer.rb +17 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/time_writer.rb +18 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj/value_writer.rb +16 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj.rb +10 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby/oj_serialization_provider.rb +25 -0
- data/lib/eventq/eventq_base/serialization_providers/jruby.rb +2 -0
- data/lib/eventq/eventq_base/serialization_providers/json_serialization_provider.rb +28 -0
- data/lib/eventq/eventq_base/serialization_providers/oj_serialization_provider.rb +24 -0
- data/lib/eventq/eventq_base/serialization_providers.rb +36 -0
- data/lib/eventq/eventq_base/signature_providers/sha256_signature_provider.rb +31 -0
- data/lib/eventq/eventq_base/signature_providers.rb +44 -0
- data/lib/eventq/eventq_base/subscription_manager_contract.rb +13 -0
- data/lib/eventq/eventq_base/version.rb +3 -0
- data/lib/eventq/eventq_base/worker_id.rb +20 -0
- data/lib/eventq/eventq_rabbitmq/README.md +36 -0
- data/lib/eventq/eventq_rabbitmq/default_queue.rb +12 -0
- data/lib/eventq/eventq_rabbitmq/jruby/rabbitmq_queue_worker.rb +367 -0
- data/lib/eventq/eventq_rabbitmq/rabbitmq_eventq_client.rb +140 -0
- data/lib/eventq/eventq_rabbitmq/rabbitmq_queue_client.rb +54 -0
- data/lib/eventq/eventq_rabbitmq/rabbitmq_queue_manager.rb +104 -0
- data/lib/eventq/eventq_rabbitmq/rabbitmq_queue_worker.rb +168 -0
- data/lib/eventq/eventq_rabbitmq/rabbitmq_status_checker.rb +62 -0
- data/lib/eventq/eventq_rabbitmq/rabbitmq_subscription_manager.rb +54 -0
- data/lib/eventq/queue_worker.rb +241 -0
- data/lib/eventq/rabbitmq.rb +49 -0
- data/lib/eventq/worker_status.rb +64 -0
- data/lib/eventq.rb +25 -0
- metadata +289 -0
@@ -0,0 +1,241 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eventq/worker_status'
|
4
|
+
|
5
|
+
module EventQ
|
6
|
+
class QueueWorker
|
7
|
+
attr_accessor :is_running
|
8
|
+
attr_reader :worker_status, :worker_adapter
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@worker_status = EventQ::WorkerStatus.new
|
12
|
+
@is_running = false
|
13
|
+
@last_gc_flush = Time.now
|
14
|
+
@gc_flush_interval = 10
|
15
|
+
end
|
16
|
+
|
17
|
+
def start(queue, options = {}, &block)
|
18
|
+
EventQ.logger.info("[#{self.class}] - Preparing to start listening for messages.")
|
19
|
+
|
20
|
+
# Make sure mandatory options are specified
|
21
|
+
mandatory = [:worker_adapter, :client]
|
22
|
+
missing = mandatory - options.keys
|
23
|
+
raise "[#{self.class}] - Missing options. #{missing} must be specified." unless missing.empty?
|
24
|
+
|
25
|
+
@worker_adapter = options[:worker_adapter]
|
26
|
+
worker_adapter.context = self
|
27
|
+
|
28
|
+
raise "[#{self.class}] - Worker is already running." if running?
|
29
|
+
|
30
|
+
configure(queue, options)
|
31
|
+
worker_adapter.configure(options)
|
32
|
+
|
33
|
+
queue_name = EventQ.create_queue_name(queue.name)
|
34
|
+
EventQ.logger.info("[#{self.class}] - Listening for messages on queue: #{queue_name}}")
|
35
|
+
|
36
|
+
# Allow the worker to be started on a thread or on the main process.
|
37
|
+
# Using the thread won't block the parent process, whereas starting on the main process will.
|
38
|
+
if @block_process
|
39
|
+
start_worker(block, options, queue)
|
40
|
+
else
|
41
|
+
Thread.new { start_worker(block, options, queue) }
|
42
|
+
end
|
43
|
+
@is_running = true
|
44
|
+
end
|
45
|
+
|
46
|
+
def start_worker(block, options, queue)
|
47
|
+
if @fork_count > 0
|
48
|
+
@fork_count.times do
|
49
|
+
pid = fork do
|
50
|
+
start_process(options, queue, block)
|
51
|
+
end
|
52
|
+
# For the parent worker to know about the list of PIDS of the forks, we have to track them after the fork
|
53
|
+
# is created. In a fork the collection would be copied and there is no shared reference between processes.
|
54
|
+
# So each fork gets its own copy of the @worker_status variable.
|
55
|
+
track_process(pid)
|
56
|
+
end
|
57
|
+
|
58
|
+
Process.waitall
|
59
|
+
else
|
60
|
+
# No need to track process/threads separately as we are in the main parent process,
|
61
|
+
# and the logic inside start_process will handle it correctly.
|
62
|
+
start_process(options, queue, block)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def start_process(options, queue, block)
|
67
|
+
%w'INT TERM'.each do |sig|
|
68
|
+
Signal.trap(sig) {
|
69
|
+
stop
|
70
|
+
exit
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
# need to set it again since we might be in a fork.
|
75
|
+
@is_running = true
|
76
|
+
tracker = track_process(Process.pid)
|
77
|
+
|
78
|
+
# Execute any specific adapter worker logic before the threads are launched.
|
79
|
+
# This could range from setting instance variables, extra options, etc.
|
80
|
+
worker_adapter.pre_process(self, options)
|
81
|
+
|
82
|
+
if @thread_count > 0
|
83
|
+
@thread_count.times do
|
84
|
+
thr = Thread.new do
|
85
|
+
start_thread(queue, options, block)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Allow the thread to kill the parent process if an error occurs
|
89
|
+
thr.abort_on_exception = true
|
90
|
+
track_thread(tracker, thr)
|
91
|
+
end
|
92
|
+
else
|
93
|
+
start_thread(queue, options, block)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Only on the main process should you be able to not wait on a thread, otherwise
|
97
|
+
# any forked process will just immediately quit
|
98
|
+
unless options[:wait] == false && options[:fork_count] == 0
|
99
|
+
worker_status.threads.each { |thr| thr.thread.join }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def start_thread(queue, options, block)
|
104
|
+
worker_adapter.thread_process_iteration(queue, options, block)
|
105
|
+
rescue Exception => e # rubocop:disable Lint/RescueException
|
106
|
+
EventQ.logger.error(e)
|
107
|
+
call_on_error_block(error: e, message: e.message)
|
108
|
+
raise Exceptions::WorkerThreadError, e.message, e.backtrace
|
109
|
+
end
|
110
|
+
|
111
|
+
def stop
|
112
|
+
EventQ.logger.info("[#{self.class}] - Stopping.")
|
113
|
+
@is_running = false
|
114
|
+
# Need to notify all processes(forks) to stop as well.
|
115
|
+
worker_status.pids.each do |pid|
|
116
|
+
begin
|
117
|
+
Process.kill('TERM', pid) if Process.pid != pid
|
118
|
+
rescue Errno::ESRCH
|
119
|
+
# Continue on stopping if the process already died and can't be found.
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def running?
|
125
|
+
@is_running
|
126
|
+
end
|
127
|
+
|
128
|
+
def deserialize_message(payload)
|
129
|
+
provider = @serialization_provider_manager.get_provider(EventQ::Configuration.serialization_provider)
|
130
|
+
provider.deserialize(payload)
|
131
|
+
end
|
132
|
+
|
133
|
+
def serialize_message(msg)
|
134
|
+
provider = @serialization_provider_manager.get_provider(EventQ::Configuration.serialization_provider)
|
135
|
+
provider.serialize(msg)
|
136
|
+
end
|
137
|
+
|
138
|
+
def gc_flush
|
139
|
+
if Time.now - last_gc_flush > @gc_flush_interval
|
140
|
+
GC.start
|
141
|
+
@last_gc_flush = Time.now
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
def last_gc_flush
|
146
|
+
@last_gc_flush
|
147
|
+
end
|
148
|
+
|
149
|
+
def configure(queue, options = {})
|
150
|
+
# default thread count
|
151
|
+
@thread_count = 1
|
152
|
+
if options.key?(:thread_count)
|
153
|
+
@thread_count = options[:thread_count] if options[:thread_count] > 0
|
154
|
+
end
|
155
|
+
|
156
|
+
# default sleep time in seconds
|
157
|
+
@sleep = 0
|
158
|
+
if options.key?(:sleep)
|
159
|
+
EventQ.logger.warn("[#{self.class}] - :sleep is deprecated.")
|
160
|
+
end
|
161
|
+
|
162
|
+
@fork_count = 0
|
163
|
+
if options.key?(:fork_count)
|
164
|
+
@fork_count = options[:fork_count]
|
165
|
+
end
|
166
|
+
|
167
|
+
if options.key?(:gc_flush_interval)
|
168
|
+
@gc_flush_interval = options[:gc_flush_interval]
|
169
|
+
end
|
170
|
+
|
171
|
+
# The default is to block the process where the worker starts.
|
172
|
+
# You may not want it to block if an application needs to run multiple things at the same time.
|
173
|
+
# Example: Running a background worker and a web service on the same application.
|
174
|
+
@block_process = true
|
175
|
+
if options.key?(:block_process)
|
176
|
+
@block_process = options[:block_process]
|
177
|
+
end
|
178
|
+
|
179
|
+
message_list = [
|
180
|
+
"Process Count: #{@fork_count}",
|
181
|
+
"Thread Count: #{@thread_count}",
|
182
|
+
"Interval Sleep: #{@sleep}",
|
183
|
+
"GC Flush Interval: #{@gc_flush_interval}",
|
184
|
+
"Block process: #{@block_process}"
|
185
|
+
]
|
186
|
+
EventQ.logger.info("[#{self.class}] - Configuring. #{message_list.join(' | ')}")
|
187
|
+
end
|
188
|
+
|
189
|
+
def on_retry_exceeded(&block)
|
190
|
+
@on_retry_exceeded_block = block
|
191
|
+
end
|
192
|
+
|
193
|
+
def on_retry(&block)
|
194
|
+
@on_retry_block = block
|
195
|
+
end
|
196
|
+
|
197
|
+
def on_error(&block)
|
198
|
+
@on_error_block = block
|
199
|
+
end
|
200
|
+
|
201
|
+
def call_on_error_block(error:, message: nil)
|
202
|
+
call_block(:on_error_block, error, message)
|
203
|
+
end
|
204
|
+
|
205
|
+
def call_on_retry_exceeded_block(message)
|
206
|
+
call_block(:on_retry_exceeded_block, message)
|
207
|
+
end
|
208
|
+
|
209
|
+
def call_on_retry_block(message)
|
210
|
+
call_block(:on_retry_block, message)
|
211
|
+
end
|
212
|
+
|
213
|
+
private
|
214
|
+
|
215
|
+
def call_block(block_name, *args)
|
216
|
+
block_variable = "@#{block_name}"
|
217
|
+
if instance_variable_get(block_variable)
|
218
|
+
EventQ.logger.debug { "[#{self.class}] - Executing #{block_variable}." }
|
219
|
+
begin
|
220
|
+
instance_variable_get(block_variable).call(*args)
|
221
|
+
rescue => e
|
222
|
+
EventQ.logger.error("[#{self.class}] - An error occurred executing the #{block_variable}. Error: #{e}")
|
223
|
+
end
|
224
|
+
else
|
225
|
+
EventQ.logger.debug { "[#{self.class}] - No #{block_variable} specified." }
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
def track_process(pid)
|
230
|
+
tracker = EventQ::WorkerProcess.new(pid)
|
231
|
+
worker_status.processes.push(tracker)
|
232
|
+
tracker
|
233
|
+
end
|
234
|
+
|
235
|
+
def track_thread(process_tracker, thread)
|
236
|
+
tracker = EventQ::WorkerThread.new(thread)
|
237
|
+
process_tracker.threads.push(tracker)
|
238
|
+
tracker
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# require 'eventq_base'
|
2
|
+
|
3
|
+
if RUBY_PLATFORM =~ /java/
|
4
|
+
require 'march_hare'
|
5
|
+
else
|
6
|
+
require 'bunny'
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'hash_kit'
|
10
|
+
require_relative './eventq_rabbitmq/rabbitmq_queue_client'
|
11
|
+
require_relative './eventq_rabbitmq/rabbitmq_queue_manager'
|
12
|
+
|
13
|
+
if RUBY_PLATFORM =~ /java/
|
14
|
+
require_relative './eventq_rabbitmq/jruby/rabbitmq_queue_worker'
|
15
|
+
else
|
16
|
+
require_relative './eventq_rabbitmq/rabbitmq_queue_worker'
|
17
|
+
end
|
18
|
+
|
19
|
+
require_relative './eventq_rabbitmq/rabbitmq_subscription_manager'
|
20
|
+
require_relative './eventq_rabbitmq/rabbitmq_eventq_client'
|
21
|
+
require_relative './eventq_rabbitmq/default_queue'
|
22
|
+
require_relative './eventq_rabbitmq/rabbitmq_status_checker'
|
23
|
+
|
24
|
+
module EventQ
|
25
|
+
def self.namespace
|
26
|
+
@namespace
|
27
|
+
end
|
28
|
+
def self.namespace=(value)
|
29
|
+
@namespace = value
|
30
|
+
end
|
31
|
+
def self.create_event_type(event_type)
|
32
|
+
if EventQ.namespace == nil
|
33
|
+
return event_type
|
34
|
+
end
|
35
|
+
return "#{EventQ.namespace}-#{event_type}"
|
36
|
+
end
|
37
|
+
def self.create_queue_name(queue_name)
|
38
|
+
if EventQ.namespace == nil
|
39
|
+
return queue_name
|
40
|
+
end
|
41
|
+
return "#{EventQ.namespace}-#{queue_name}"
|
42
|
+
end
|
43
|
+
def self.create_exchange_name(exchange_name)
|
44
|
+
if EventQ.namespace == nil
|
45
|
+
return exchange_name
|
46
|
+
end
|
47
|
+
return "#{EventQ.namespace}-#{exchange_name}"
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'concurrent'
|
4
|
+
|
5
|
+
module EventQ
|
6
|
+
# Class used to represent the main worker status and the collection of forked worker processes.
|
7
|
+
# The main worker process will not have access to a forks collection of processes and threads.
|
8
|
+
# This is due to forks getting a copy of the process memory space and there is no such thing as shared resources
|
9
|
+
# between child processes and the parent process. Without implementing a need using inter process communication with
|
10
|
+
# IO::Pipe, only the PID is of any use for the parent process.
|
11
|
+
# To summarize, if using forks, the parent process will only have a collection of PIDS and not any threads
|
12
|
+
# associated with those PIDS.
|
13
|
+
class WorkerStatus
|
14
|
+
|
15
|
+
# List of WorkerProcess
|
16
|
+
attr_reader :processes
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@processes = Concurrent::Array.new
|
20
|
+
end
|
21
|
+
|
22
|
+
# Retrieve a simple list of all PIDS.
|
23
|
+
def pids
|
24
|
+
list = []
|
25
|
+
@processes.each do |p|
|
26
|
+
list.push(p.pid)
|
27
|
+
end
|
28
|
+
list
|
29
|
+
end
|
30
|
+
|
31
|
+
# Retrieve a simple list of all threads.
|
32
|
+
# Important Note: The list of threads is only relevant to the current process.
|
33
|
+
def threads
|
34
|
+
list = []
|
35
|
+
@processes.each do |p|
|
36
|
+
p.threads.each do |t|
|
37
|
+
list.push(t)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
list
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Class that is used to represent a process and its associated threads.
|
46
|
+
class WorkerProcess
|
47
|
+
attr_accessor :pid
|
48
|
+
attr_reader :threads
|
49
|
+
def initialize(pid)
|
50
|
+
self.pid = pid
|
51
|
+
@threads = Concurrent::Array.new
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class WorkerThread
|
56
|
+
# This could be a string or a Thread object.
|
57
|
+
# When spawning forked workers, threads cannot be marshalled back to another process.
|
58
|
+
attr_reader :thread
|
59
|
+
|
60
|
+
def initialize(thread)
|
61
|
+
@thread = thread
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/eventq.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'securerandom'
|
2
|
+
require 'redlock'
|
3
|
+
require 'class_kit'
|
4
|
+
require 'hash_kit'
|
5
|
+
|
6
|
+
require_relative 'eventq/eventq_base/eventq_logger'
|
7
|
+
require_relative 'eventq/eventq_base/queue'
|
8
|
+
require_relative 'eventq/eventq_base/exchange'
|
9
|
+
require_relative 'eventq/eventq_base/queue_message'
|
10
|
+
require_relative 'eventq/eventq_base/message_args'
|
11
|
+
require_relative 'eventq/eventq_base/queue_worker_contract'
|
12
|
+
require_relative 'eventq/eventq_base/event_raised_exchange'
|
13
|
+
require_relative 'eventq/eventq_base/event_raised_queue'
|
14
|
+
require_relative 'eventq/eventq_base/subscription_manager_contract'
|
15
|
+
require_relative 'eventq/eventq_base/eventq_client_contract'
|
16
|
+
require_relative 'eventq/eventq_base/configuration'
|
17
|
+
require_relative 'eventq/eventq_base/serialization_providers'
|
18
|
+
require_relative 'eventq/eventq_base/worker_id'
|
19
|
+
require_relative 'eventq/eventq_base/nonce_manager'
|
20
|
+
require_relative 'eventq/eventq_base/signature_providers'
|
21
|
+
require_relative 'eventq/eventq_base/exceptions'
|
22
|
+
require_relative 'eventq/queue_worker'
|
23
|
+
|
24
|
+
|
25
|
+
|
metadata
ADDED
@@ -0,0 +1,289 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: eventq
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.rc1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- SageOne
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-07-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: shoulda-matchers
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: aws-sdk
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: class_kit
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: redlock
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: openssl
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: concurrent-ruby
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: activesupport
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '4'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '4'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: oj
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: bunny
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
description: This is EventQ system
|
196
|
+
email:
|
197
|
+
- sageone@sage.com
|
198
|
+
executables: []
|
199
|
+
extensions: []
|
200
|
+
extra_rdoc_files: []
|
201
|
+
files:
|
202
|
+
- README.md
|
203
|
+
- bin/console
|
204
|
+
- bin/setup
|
205
|
+
- lib/eventq.rb
|
206
|
+
- lib/eventq/aws.rb
|
207
|
+
- lib/eventq/eventq_aws/README.md
|
208
|
+
- lib/eventq/eventq_aws/aws_eventq_client.rb
|
209
|
+
- lib/eventq/eventq_aws/aws_queue_client.rb
|
210
|
+
- lib/eventq/eventq_aws/aws_queue_manager.rb
|
211
|
+
- lib/eventq/eventq_aws/aws_queue_worker.rb
|
212
|
+
- lib/eventq/eventq_aws/aws_status_checker.rb
|
213
|
+
- lib/eventq/eventq_aws/aws_subscription_manager.rb
|
214
|
+
- lib/eventq/eventq_aws/jruby/aws_queue_worker.rb
|
215
|
+
- lib/eventq/eventq_aws/sns.rb
|
216
|
+
- lib/eventq/eventq_aws/sqs.rb
|
217
|
+
- lib/eventq/eventq_base/configuration.rb
|
218
|
+
- lib/eventq/eventq_base/event_raised_exchange.rb
|
219
|
+
- lib/eventq/eventq_base/event_raised_queue.rb
|
220
|
+
- lib/eventq/eventq_base/eventq_client_contract.rb
|
221
|
+
- lib/eventq/eventq_base/eventq_logger.rb
|
222
|
+
- lib/eventq/eventq_base/exceptions.rb
|
223
|
+
- lib/eventq/eventq_base/exceptions/invalid_signature_exception.rb
|
224
|
+
- lib/eventq/eventq_base/exceptions/worker_thread_error.rb
|
225
|
+
- lib/eventq/eventq_base/exchange.rb
|
226
|
+
- lib/eventq/eventq_base/message_args.rb
|
227
|
+
- lib/eventq/eventq_base/nonce_manager.rb
|
228
|
+
- lib/eventq/eventq_base/queue.rb
|
229
|
+
- lib/eventq/eventq_base/queue_message.rb
|
230
|
+
- lib/eventq/eventq_base/queue_worker_contract.rb
|
231
|
+
- lib/eventq/eventq_base/serialization_providers.rb
|
232
|
+
- lib/eventq/eventq_base/serialization_providers/binary_serialization_provider.rb
|
233
|
+
- lib/eventq/eventq_base/serialization_providers/jruby.rb
|
234
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj.rb
|
235
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/array_writer.rb
|
236
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/attribute_writer.rb
|
237
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/class_writer.rb
|
238
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/date_time_writer.rb
|
239
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/date_writer.rb
|
240
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/hash_writer.rb
|
241
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/rational_writer.rb
|
242
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/serializer.rb
|
243
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/time_writer.rb
|
244
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj/value_writer.rb
|
245
|
+
- lib/eventq/eventq_base/serialization_providers/jruby/oj_serialization_provider.rb
|
246
|
+
- lib/eventq/eventq_base/serialization_providers/json_serialization_provider.rb
|
247
|
+
- lib/eventq/eventq_base/serialization_providers/oj_serialization_provider.rb
|
248
|
+
- lib/eventq/eventq_base/signature_providers.rb
|
249
|
+
- lib/eventq/eventq_base/signature_providers/sha256_signature_provider.rb
|
250
|
+
- lib/eventq/eventq_base/subscription_manager_contract.rb
|
251
|
+
- lib/eventq/eventq_base/version.rb
|
252
|
+
- lib/eventq/eventq_base/worker_id.rb
|
253
|
+
- lib/eventq/eventq_rabbitmq/README.md
|
254
|
+
- lib/eventq/eventq_rabbitmq/default_queue.rb
|
255
|
+
- lib/eventq/eventq_rabbitmq/jruby/rabbitmq_queue_worker.rb
|
256
|
+
- lib/eventq/eventq_rabbitmq/rabbitmq_eventq_client.rb
|
257
|
+
- lib/eventq/eventq_rabbitmq/rabbitmq_queue_client.rb
|
258
|
+
- lib/eventq/eventq_rabbitmq/rabbitmq_queue_manager.rb
|
259
|
+
- lib/eventq/eventq_rabbitmq/rabbitmq_queue_worker.rb
|
260
|
+
- lib/eventq/eventq_rabbitmq/rabbitmq_status_checker.rb
|
261
|
+
- lib/eventq/eventq_rabbitmq/rabbitmq_subscription_manager.rb
|
262
|
+
- lib/eventq/queue_worker.rb
|
263
|
+
- lib/eventq/rabbitmq.rb
|
264
|
+
- lib/eventq/worker_status.rb
|
265
|
+
homepage: https://github.com/sage/eventq
|
266
|
+
licenses:
|
267
|
+
- MIT
|
268
|
+
metadata: {}
|
269
|
+
post_install_message:
|
270
|
+
rdoc_options: []
|
271
|
+
require_paths:
|
272
|
+
- lib
|
273
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
274
|
+
requirements:
|
275
|
+
- - ">="
|
276
|
+
- !ruby/object:Gem::Version
|
277
|
+
version: '0'
|
278
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
|
+
requirements:
|
280
|
+
- - ">"
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: 1.3.1
|
283
|
+
requirements: []
|
284
|
+
rubyforge_project:
|
285
|
+
rubygems_version: 2.7.7
|
286
|
+
signing_key:
|
287
|
+
specification_version: 4
|
288
|
+
summary: This is EventQ system
|
289
|
+
test_files: []
|