eventq_rabbitmq 0.1.6 → 1.0.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_rabbitmq.rb +1 -0
- data/lib/eventq_rabbitmq/default_queue.rb +10 -5
- data/lib/eventq_rabbitmq/rabbitmq_eventq_client.rb +24 -21
- data/lib/eventq_rabbitmq/rabbitmq_queue_client.rb +17 -33
- data/lib/eventq_rabbitmq/rabbitmq_queue_manager.rb +34 -30
- data/lib/eventq_rabbitmq/rabbitmq_queue_worker.rb +140 -106
- data/lib/eventq_rabbitmq/rabbitmq_subscription_manager.rb +27 -19
- data/lib/eventq_rabbitmq/version.rb +1 -1
- metadata +20 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 369d9778cbb3da34514da80dfd8023e49649430d
|
4
|
+
data.tar.gz: d0f87ad7f7681d7170b538c2d913e5ff82d8550c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70bc7c81893c10e9e759044c24b8ed224deb33a00842159e52ba33bfe735c169ae8f005b0534872e9bd39780442c3895f014702e29e7912b52decf4b5202c353
|
7
|
+
data.tar.gz: f328c06a174ce2d9742a6e4bd7743a401509d848c44104086c4bcc91ceaeb69bcc40e718c6dd1068d665214de2a6b3613eab07a158177961b5545720c9c21595
|
data/lib/eventq_rabbitmq.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module EventQ
|
2
|
+
module RabbitMq
|
3
|
+
class DefaultQueue < Queue
|
4
|
+
def initialize
|
5
|
+
@name = 'Default'
|
6
|
+
@allow_retry = false
|
7
|
+
@max_retry_attempts = 1
|
8
|
+
end
|
9
|
+
end
|
6
10
|
end
|
7
11
|
end
|
12
|
+
|
@@ -1,30 +1,33 @@
|
|
1
|
-
|
1
|
+
module EventQ
|
2
|
+
module RabbitMq
|
3
|
+
class EventQClient
|
2
4
|
|
3
|
-
|
5
|
+
def initialize(options={})
|
6
|
+
@client = QueueClient.new
|
7
|
+
@queue_manager = QueueManager.new
|
8
|
+
@event_raised_exchange = EventRaisedExchange.new
|
9
|
+
@subscription_manager = options[:subscription_manager] || SubscriptionManager.new
|
10
|
+
end
|
4
11
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
@event_raised_exchange = EventRaisedExchange.new
|
9
|
-
@subscription_manager = options[:subscription_manager] || RabbitMqSubscriptionManager.new
|
10
|
-
end
|
11
|
-
|
12
|
-
def raise(event_type, event)
|
13
|
-
channel = @client.get_channel
|
14
|
-
ex = queue_manager.get_exchange(channel, event_raised_exchange)
|
12
|
+
def raise(event_type, event)
|
13
|
+
channel = @client.get_channel
|
14
|
+
ex = @queue_manager.get_exchange(channel, @event_raised_exchange)
|
15
15
|
|
16
|
-
|
16
|
+
@subscription_manager.subscribe(event_type, DefaultQueue.new)
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
qm = EventQ::QueueMessage.new
|
19
|
+
qm.content = event
|
20
|
+
qm.type = event_type
|
21
21
|
|
22
|
-
|
22
|
+
message = Oj.dump(qm)
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
ex.publish(message, :routing_key => event_type)
|
25
|
+
channel.close
|
26
26
|
|
27
|
-
|
27
|
+
return true
|
28
|
+
end
|
28
29
|
|
29
|
-
|
30
|
+
end
|
31
|
+
end
|
30
32
|
end
|
33
|
+
|
@@ -1,43 +1,27 @@
|
|
1
|
-
|
1
|
+
module EventQ
|
2
|
+
module RabbitMq
|
3
|
+
class QueueClient
|
2
4
|
|
3
|
-
|
5
|
+
def initialize
|
4
6
|
|
5
|
-
|
7
|
+
@endpoint = ENV['MQ_ENDPOINT'] || 'localhost'
|
6
8
|
|
7
|
-
|
8
|
-
if ENV['MQ_ENDPOINT'] != nil
|
9
|
-
@endpoint = ENV['MQ_ENDPOINT']
|
10
|
-
end
|
9
|
+
@port = Integer(ENV['MQ_PORT'] || 5672)
|
11
10
|
|
12
|
-
|
13
|
-
if ENV['MQ_PORT'] != nil
|
14
|
-
@port = Integer(ENV['MQ_PORT'])
|
15
|
-
end
|
11
|
+
@user = ENV['MQ_USER'] || 'guest'
|
16
12
|
|
17
|
-
|
18
|
-
if ENV['MQ_USER'] != nil
|
19
|
-
@user = ENV['MQ_USER']
|
20
|
-
end
|
13
|
+
@password = ENV['MQ_PASSWORD'] || 'guest'
|
21
14
|
|
22
|
-
|
23
|
-
if ENV['MQ_PASSWORD'] != nil
|
24
|
-
@password = ENV['MQ_PASSWORD']
|
25
|
-
end
|
15
|
+
@ssl = ENV['MQ_SSL'] == 'true' || false
|
26
16
|
|
27
|
-
|
28
|
-
if ENV['MQ_SSL'] != nil
|
29
|
-
@ssl = ENV['MQ_SSL']
|
30
|
-
end
|
17
|
+
end
|
31
18
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
def get_channel
|
20
|
+
conn = Bunny.new(:host => @endpoint, :port => @port, :user => @user, :pass => @password, :ssl => @ssl)
|
21
|
+
conn.start
|
22
|
+
return conn.create_channel
|
23
|
+
end
|
36
24
|
|
37
|
-
|
38
|
-
conn = Bunny.new(:host => @endpoint, :port => @port, :user => @user, :pass => @password, :ssl => @ssl)
|
39
|
-
conn.start
|
40
|
-
return conn.create_channel
|
25
|
+
end
|
41
26
|
end
|
42
|
-
|
43
|
-
end
|
27
|
+
end
|
@@ -1,42 +1,46 @@
|
|
1
|
-
|
1
|
+
module EventQ
|
2
|
+
module RabbitMq
|
3
|
+
class QueueManager
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
5
|
+
def initialize
|
6
|
+
@event_raised_exchange = EventQ::EventRaisedExchange.new
|
7
|
+
end
|
6
8
|
|
7
|
-
|
9
|
+
def get_queue(channel, queue)
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
#get/create the queue
|
12
|
+
q = channel.queue(queue.name, :durable => true)
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
if queue.allow_retry
|
15
|
+
retry_exchange = get_retry_exchange(channel, queue)
|
16
|
+
subscriber_exchange = get_subscriber_exchange(channel, queue)
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
+
retry_queue = get_retry_queue(channel, queue)
|
19
|
+
retry_queue.bind(retry_exchange)
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
+
q.bind(subscriber_exchange)
|
22
|
+
end
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
+
return q
|
25
|
+
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
def get_retry_exchange(channel, queue)
|
28
|
+
return channel.fanout("#{queue.name}.r.ex")
|
29
|
+
end
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
31
|
+
def get_subscriber_exchange(channel, queue)
|
32
|
+
return channel.fanout("#{queue.name}.ex")
|
33
|
+
end
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
def get_retry_queue(channel, queue)
|
36
|
+
subscriber_exchange = get_subscriber_exchange(channel, queue)
|
37
|
+
return channel.queue("#{queue.name}.r", :durable => true, :arguments => { "x-dead-letter-exchange" => subscriber_exchange.name, "x-message-ttl" => queue.retry_delay })
|
38
|
+
end
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
|
40
|
+
def get_exchange(channel, exchange)
|
41
|
+
return channel.direct(exchange.name, :durable => true)
|
42
|
+
end
|
41
43
|
|
42
|
-
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,155 +1,189 @@
|
|
1
|
-
|
1
|
+
module EventQ
|
2
|
+
module RabbitMq
|
3
|
+
class QueueWorker
|
2
4
|
|
3
|
-
|
5
|
+
attr_accessor :is_running
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
def initialize
|
8
|
+
@threads = []
|
9
|
+
@is_running = false
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
@retry_exceeded_block = nil
|
12
|
+
end
|
11
13
|
|
12
|
-
|
14
|
+
def start(queue, options = {}, &block)
|
13
15
|
|
14
|
-
|
16
|
+
configure(queue, options)
|
15
17
|
|
16
|
-
|
18
|
+
puts '[QUEUE_WORKER] Listening for messages.'
|
17
19
|
|
18
|
-
|
20
|
+
raise 'Worker is already running.' if running?
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
+
@is_running = true
|
23
|
+
@threads = []
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
#loop through each thread count
|
26
|
+
@thread_count.times do
|
27
|
+
thr = Thread.new do
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
+
client = QueueClient.new
|
30
|
+
manager = QueueManager.new
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
+
#begin the queue loop for this thread
|
33
|
+
while true do
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
#check if the worker is still allowed to run and break out of thread loop if not
|
36
|
+
if !@is_running
|
37
|
+
break
|
38
|
+
end
|
37
39
|
|
38
|
-
|
40
|
+
channel = client.get_channel
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
-
|
42
|
+
#get the queue
|
43
|
+
q = manager.get_queue(channel, queue)
|
44
|
+
retry_exchange = manager.get_retry_exchange(channel, queue)
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
+
received = false
|
47
|
+
error = false
|
48
|
+
abort = false
|
46
49
|
|
47
|
-
|
48
|
-
|
50
|
+
begin
|
51
|
+
delivery_info, properties, payload = q.pop(:manual_ack => true, :block => true)
|
49
52
|
|
50
|
-
|
51
|
-
|
53
|
+
#check that message was received
|
54
|
+
if payload != nil
|
52
55
|
|
53
|
-
|
56
|
+
message = Oj.load(payload)
|
54
57
|
|
55
|
-
|
56
|
-
|
58
|
+
puts "[QUEUE_WORKER] Message received. Retry Attempts: #{message.retry_attempts}"
|
59
|
+
puts properties
|
57
60
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
puts '[QUEUE_WORKER] An unhandled error happened attempting to process a queue message.'
|
68
|
-
puts "Error: #{e}"
|
69
|
-
|
70
|
-
#reject the message to remove from queue
|
71
|
-
channel.reject(delivery_info.delivery_tag, false)
|
72
|
-
error = true
|
73
|
-
puts '[QUEUE_WORKER] Message rejected.'
|
74
|
-
|
75
|
-
#check if the message is allowed to be retried
|
76
|
-
if queue.allow_retry
|
77
|
-
|
78
|
-
puts '[QUEUE_WORKER] Checking retry attempts...'
|
79
|
-
if message.retry_attempts < queue.max_retry_attempts
|
80
|
-
puts'[QUEUE_WORKER] Incrementing retry attempts count.'
|
81
|
-
message.retry_attempts += 1
|
82
|
-
puts '[QUEUE_WORKER] Sending message for retry.'
|
83
|
-
retry_exchange.publish(Oj.dump(message))
|
84
|
-
puts '[QUEUE_WORKER] Published message to retry exchange.'
|
85
|
-
else
|
86
|
-
if @retry_exceeded_block != nil
|
87
|
-
@retry_exceeded_block.call(message)
|
61
|
+
message_args = EventQ::MessageArgs.new(message.type, message.retry_attempts)
|
62
|
+
|
63
|
+
#begin worker block for queue message
|
64
|
+
begin
|
65
|
+
block.call(message.content, message_args)
|
66
|
+
|
67
|
+
if message_args.abort == true
|
68
|
+
abort = true
|
69
|
+
puts '[QUEUE_WORKER] Message aborted.'
|
88
70
|
else
|
89
|
-
|
71
|
+
#accept the message as processed
|
72
|
+
channel.acknowledge(delivery_info.delivery_tag, false)
|
73
|
+
puts '[QUEUE_WORKER] Message acknowledged.'
|
74
|
+
received = true
|
90
75
|
end
|
76
|
+
|
77
|
+
rescue => e
|
78
|
+
puts '[QUEUE_WORKER] An unhandled error happened attempting to process a queue message.'
|
79
|
+
puts "Error: #{e}"
|
80
|
+
|
81
|
+
error = true
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
if error || abort
|
86
|
+
reject_message(channel, message, delivery_info, retry_exchange, queue)
|
91
87
|
end
|
88
|
+
|
92
89
|
end
|
93
90
|
|
91
|
+
rescue Timeout::Error
|
92
|
+
puts 'Timeout occured attempting to pop a message from the queue.'
|
93
|
+
end
|
94
|
+
|
95
|
+
channel.close
|
96
|
+
|
97
|
+
#check if any message was received
|
98
|
+
if !received && !error
|
99
|
+
puts "[QUEUE_WORKER] No message received. Sleeping for #{@sleep} seconds"
|
100
|
+
#no message received so sleep before attempting to pop another message from the queue
|
101
|
+
sleep(@sleep)
|
94
102
|
end
|
95
103
|
|
96
104
|
end
|
97
105
|
|
98
|
-
rescue Timeout::Error
|
99
|
-
puts 'Timeout occured attempting to pop a message from the queue.'
|
100
106
|
end
|
107
|
+
@threads.push(thr)
|
101
108
|
|
102
|
-
|
103
|
-
if !received && !error
|
104
|
-
puts "[QUEUE_WORKER] No message received. Sleeping for #{@sleep} seconds"
|
105
|
-
#no message received so sleep before attempting to pop another message from the queue
|
106
|
-
sleep(@sleep)
|
107
|
-
end
|
109
|
+
end
|
108
110
|
|
111
|
+
if options.key?(:wait) && options[:wait] == true
|
112
|
+
@threads.each { |thr| thr.join }
|
109
113
|
end
|
110
114
|
|
115
|
+
return true
|
116
|
+
|
111
117
|
end
|
112
|
-
@threads.push(thr)
|
113
118
|
|
114
|
-
|
119
|
+
def stop
|
120
|
+
@is_running = false
|
121
|
+
@threads.each { |thr| thr.join }
|
122
|
+
return true
|
123
|
+
end
|
115
124
|
|
116
|
-
|
117
|
-
|
118
|
-
|
125
|
+
def on_retry_exceeded(&block)
|
126
|
+
@retry_exceeded_block = block
|
127
|
+
return nil
|
128
|
+
end
|
119
129
|
|
120
|
-
|
130
|
+
def running?
|
131
|
+
return @is_running
|
132
|
+
end
|
121
133
|
|
122
|
-
|
123
|
-
@is_running = false
|
124
|
-
@threads.each { |thr| thr.join }
|
125
|
-
end
|
134
|
+
private
|
126
135
|
|
127
|
-
|
128
|
-
|
129
|
-
|
136
|
+
def reject_message(channel, message, delivery_info, retry_exchange, queue)
|
137
|
+
#reject the message to remove from queue
|
138
|
+
channel.reject(delivery_info.delivery_tag, false)
|
130
139
|
|
131
|
-
|
132
|
-
|
133
|
-
|
140
|
+
puts '[QUEUE_WORKER] Message rejected.'
|
141
|
+
|
142
|
+
#check if the message is allowed to be retried
|
143
|
+
if queue.allow_retry
|
134
144
|
|
135
|
-
|
145
|
+
puts '[QUEUE_WORKER] Checking retry attempts...'
|
136
146
|
|
137
|
-
|
147
|
+
if message.retry_attempts < queue.max_retry_attempts
|
148
|
+
puts'[QUEUE_WORKER] Incrementing retry attempts count.'
|
149
|
+
message.retry_attempts += 1
|
150
|
+
puts '[QUEUE_WORKER] Sending message for retry.'
|
151
|
+
retry_exchange.publish(Oj.dump(message))
|
152
|
+
puts '[QUEUE_WORKER] Published message to retry exchange.'
|
153
|
+
elsif @retry_exceeded_block != nil
|
154
|
+
puts '[QUEUE_WORKER] Executing retry exceeded block.'
|
155
|
+
@retry_exceeded_block.call(message)
|
156
|
+
else
|
157
|
+
puts '[QUEUE_WORKER] No retry exceeded block specified.'
|
158
|
+
end
|
138
159
|
|
139
|
-
|
160
|
+
end
|
140
161
|
|
141
|
-
|
142
|
-
@thread_count = 5
|
143
|
-
if options.key?(:thread_count)
|
144
|
-
@thread_count = options[:thread_count]
|
145
|
-
end
|
162
|
+
return true
|
146
163
|
|
147
|
-
|
148
|
-
@sleep = 15
|
149
|
-
if options.key?(:sleep)
|
150
|
-
@sleep = options[:sleep]
|
151
|
-
end
|
164
|
+
end
|
152
165
|
|
153
|
-
|
166
|
+
def configure(queue, options = {})
|
154
167
|
|
168
|
+
@queue = queue
|
169
|
+
|
170
|
+
#default thread count
|
171
|
+
@thread_count = 5
|
172
|
+
if options.key?(:thread_count)
|
173
|
+
@thread_count = options[:thread_count]
|
174
|
+
end
|
175
|
+
|
176
|
+
#default sleep time in seconds
|
177
|
+
@sleep = 15
|
178
|
+
if options.key?(:sleep)
|
179
|
+
@sleep = options[:sleep]
|
180
|
+
end
|
181
|
+
|
182
|
+
return true
|
183
|
+
|
184
|
+
end
|
185
|
+
|
186
|
+
end
|
187
|
+
end
|
155
188
|
end
|
189
|
+
|
@@ -1,28 +1,36 @@
|
|
1
|
-
|
1
|
+
module EventQ
|
2
|
+
module RabbitMq
|
3
|
+
class SubscriptionManager
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def initialize
|
6
|
+
@client = QueueClient.new
|
7
|
+
@queue_manager = QueueManager.new
|
8
|
+
@event_raised_exchange = EventQ::EventRaisedExchange.new
|
9
|
+
end
|
8
10
|
|
9
|
-
|
11
|
+
def subscribe(event_type, queue)
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
channel = @client.get_channel
|
14
|
+
queue = @queue_manager.get_queue(channel, queue)
|
15
|
+
exchange = @queue_manager.get_exchange(channel, @event_raised_exchange)
|
14
16
|
|
15
|
-
|
16
|
-
end
|
17
|
+
queue.bind(exchange, :routing_key => event_type)
|
17
18
|
|
18
|
-
|
19
|
+
return true
|
20
|
+
end
|
19
21
|
|
20
|
-
|
22
|
+
def unsubscribe(queue)
|
21
23
|
|
22
|
-
|
23
|
-
exchange = @queue_manager.get_exchange(channel, @event_raised_exchange)
|
24
|
+
channel = @client.get_channel
|
24
25
|
|
25
|
-
|
26
|
-
|
26
|
+
queue = @queue_manager.get_queue(channel, queue)
|
27
|
+
exchange = @queue_manager.get_exchange(channel, @event_raised_exchange)
|
27
28
|
|
28
|
-
|
29
|
+
queue.unbind(exchange)
|
30
|
+
|
31
|
+
return true
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,111 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventq_rabbitmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaughanbrittonsage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.11'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.11'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: oj
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bunny
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: eventq_base
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
description: This is the rabbitmq implementation for EventQ
|
@@ -117,7 +117,6 @@ extra_rdoc_files: []
|
|
117
117
|
files:
|
118
118
|
- bin/console
|
119
119
|
- bin/setup
|
120
|
-
- lib/eventq_rabbitmq.rb
|
121
120
|
- lib/eventq_rabbitmq/default_queue.rb
|
122
121
|
- lib/eventq_rabbitmq/rabbitmq_eventq_client.rb
|
123
122
|
- lib/eventq_rabbitmq/rabbitmq_queue_client.rb
|
@@ -125,6 +124,7 @@ files:
|
|
125
124
|
- lib/eventq_rabbitmq/rabbitmq_queue_worker.rb
|
126
125
|
- lib/eventq_rabbitmq/rabbitmq_subscription_manager.rb
|
127
126
|
- lib/eventq_rabbitmq/version.rb
|
127
|
+
- lib/eventq_rabbitmq.rb
|
128
128
|
homepage: https://github.com/vaughanbrittonsage/eventq
|
129
129
|
licenses:
|
130
130
|
- MIT
|
@@ -135,19 +135,18 @@ require_paths:
|
|
135
135
|
- lib
|
136
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
|
-
- -
|
138
|
+
- - '>='
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: '0'
|
141
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - '>='
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.0.14.1
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: This is the rabbitmq implementation for EventQ
|
152
152
|
test_files: []
|
153
|
-
has_rdoc:
|