eventq_rabbitmq 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f6c7ba92fd9cfd728f552fd2ab582a5df7338df7
4
- data.tar.gz: 2b80bfa57c70c3a90f751ee28b0d6b5e540cdddc
3
+ metadata.gz: d6412b8fa487b4b66191c078e3a769ad4d7a71c2
4
+ data.tar.gz: fff5750679b68ccf6b331424316e0ee58b2fb93c
5
5
  SHA512:
6
- metadata.gz: b82fe11373109e312d84f369ef1b88a4c4cdc07004bb56b6068bee5149ec8eaa1a5066f0b23bc88f50c4f9de675b4f2b94f0330262a39fd7baab3df10932ac38
7
- data.tar.gz: 6b587c693822f8a0b655c4f959cb7a3350ea4e1d945dcf5d06e5c9fb2b6698c025c17b546537d5b3a8acc9e93263d62533b22639ee60f83575bcd01f03b55c15
6
+ metadata.gz: 29faa09ac8b549ddbb2d95b958d1053336c9a2d6889550b3673a06f393ccaf0de438745ff040e9d16a30d6e001ca3dbb13f64196d2eab34b827df18a90af6522
7
+ data.tar.gz: fa120e81de36afb83c9d836dfa37af049ae984fbebbc1b86abc936bc577818b852bb897644bfa1f3fe737934e6c08fcde0dc17727f821f73f34389735b728809
@@ -0,0 +1,7 @@
1
+ class DefaultQueue < Queue
2
+ def initialize
3
+ @name = 'Default'
4
+ @allow_retry = false
5
+ @max_retry_attempts = 1
6
+ end
7
+ end
@@ -2,15 +2,18 @@ require 'oj'
2
2
 
3
3
  class RabbitMqEventQClient
4
4
 
5
- def initialize
5
+ def initialize(options={})
6
6
  @client = RabbitMqQueueClient.new
7
7
  @queue_manager = RabbitMqQueueManager.new
8
8
  @event_raised_exchange = EventRaisedExchange.new
9
+ @subscription_manager = options[:subscription_manager] || RabbitMqSubscriptionManager.new
9
10
  end
10
11
 
11
12
  def raise(event_type, event)
12
13
  channel = @client.get_channel
13
- ex = @queue_manager.get_exchange(channel, @event_raised_exchange)
14
+ ex = queue_manager.get_exchange(channel, event_raised_exchange)
15
+
16
+ subscription_manager.subscribe(event_type, DefaultQueue.new)
14
17
 
15
18
  qm = QueueMessage.new
16
19
  qm.content = event
@@ -21,4 +24,7 @@ class RabbitMqEventQClient
21
24
  ex.publish(message, :routing_key => event_type)
22
25
  end
23
26
 
24
- end
27
+ private
28
+
29
+ attr_reader :subscription_manager, :queue_manager, :event_raised_exchange
30
+ end
@@ -1,20 +1,23 @@
1
1
  class RabbitMqQueueWorker
2
2
 
3
- @threads = []
4
- @is_running = false
3
+ attr_accessor :is_running
5
4
 
6
- @retry_exceeded_block = nil
5
+ def initialize
6
+ @threads = []
7
+ @is_running = false
8
+
9
+ @retry_exceeded_block = nil
10
+ end
7
11
 
8
- def start(queue, options = {})
12
+ def start(queue, options = {}, &block)
9
13
 
10
14
  configure(queue, options)
11
15
 
12
16
  puts '[QUEUE_WORKER] Listening for messages.'
13
17
 
14
- if @is_running
15
- raise 'Worker is already running.'
16
- end
18
+ raise 'Worker is already running.' if running?
17
19
 
20
+ @is_running = true
18
21
  @threads = []
19
22
 
20
23
  #loop through each thread count
@@ -27,6 +30,11 @@ class RabbitMqQueueWorker
27
30
  #begin the queue loop for this thread
28
31
  while true do
29
32
 
33
+ #check if the worker is still allowed to run and break out of thread loop if not
34
+ if !@is_running
35
+ break
36
+ end
37
+
30
38
  channel = client.get_channel
31
39
 
32
40
  #get the queue
@@ -49,7 +57,8 @@ class RabbitMqQueueWorker
49
57
 
50
58
  #begin worker block for queue message
51
59
  begin
52
- yield message.content, message.type, message.retry_attempts
60
+ block.call(message.content, message.type, message.retry_attempts)
61
+
53
62
  #accept the message as processed
54
63
  channel.acknowledge(delivery_info.delivery_tag, false)
55
64
  puts '[QUEUE_WORKER] Message acknowledged.'
@@ -111,17 +120,18 @@ class RabbitMqQueueWorker
111
120
  end
112
121
 
113
122
  def stop
114
- @threads.each do |t|
115
- t.exit
116
- end
117
-
118
123
  @is_running = false
124
+ @threads.each { |thr| thr.join }
119
125
  end
120
126
 
121
127
  def on_retry_exceeded(&block)
122
128
  @retry_exceeded_block = block
123
129
  end
124
130
 
131
+ def running?
132
+ @is_running
133
+ end
134
+
125
135
  private
126
136
 
127
137
  def configure(queue, options = {})
@@ -142,4 +152,4 @@ class RabbitMqQueueWorker
142
152
 
143
153
  end
144
154
 
145
- end
155
+ end
@@ -1,3 +1,3 @@
1
1
  module EventqRabbitmq
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -6,4 +6,4 @@ require_relative '../lib/eventq_rabbitmq/rabbitmq_queue_manager'
6
6
  require_relative '../lib/eventq_rabbitmq/rabbitmq_queue_worker'
7
7
  require_relative '../lib/eventq_rabbitmq/rabbitmq_subscription_manager'
8
8
  require_relative '../lib/eventq_rabbitmq/rabbitmq_eventq_client'
9
-
9
+ require_relative '../lib/eventq_rabbitmq/default_queue'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventq_rabbitmq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-12 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -118,6 +118,7 @@ files:
118
118
  - bin/console
119
119
  - bin/setup
120
120
  - lib/eventq_rabbitmq.rb
121
+ - lib/eventq_rabbitmq/default_queue.rb
121
122
  - lib/eventq_rabbitmq/rabbitmq_eventq_client.rb
122
123
  - lib/eventq_rabbitmq/rabbitmq_queue_client.rb
123
124
  - lib/eventq_rabbitmq/rabbitmq_queue_manager.rb