carnivore-rabbitmq 0.2.0 → 0.2.2
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/CHANGELOG.md +5 -0
- data/lib/carnivore-rabbitmq/message_collector.rb +16 -10
- data/lib/carnivore-rabbitmq/rabbitmq.rb +6 -23
- data/lib/carnivore-rabbitmq/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: fde297db3cabbe62377e3277ac644df69c218b48
|
4
|
+
data.tar.gz: 5dfaa10d669f69b1958ea7244c6b8ab771a5ae95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16514a62fc24f878951914bbdd245425271fd5638b65ca931feea8ebdd40c74f1c0bfa7ca94e154dff737d9ac295afbcf70cc4b614a53236d36e86888fd87f31
|
7
|
+
data.tar.gz: 1196c52b20fff49f4284fcd380151a86074e5b63125fbdfa9ba7b001c3bd47307b5e1cbbc075250608aada1c29abc1820f29f3fc5490c1bb2971b48c2836429a
|
data/CHANGELOG.md
CHANGED
@@ -12,22 +12,28 @@ module Carnivore
|
|
12
12
|
|
13
13
|
# @return [Bunny::Queue, MarchHare::Queue] remote queue
|
14
14
|
attr_reader :queue
|
15
|
-
# @return [Queue] local message bucket
|
16
|
-
attr_reader :message_queue
|
17
15
|
# @return [Celluloid::Actor] actor to notify
|
18
16
|
attr_reader :notify
|
19
17
|
|
20
18
|
# Create new instance
|
21
19
|
#
|
22
20
|
# @param queue [Bunny::Queue, MarchHare::Queue] remote queue
|
23
|
-
# @param
|
24
|
-
|
25
|
-
def initialize(queue, message_queue, notify)
|
21
|
+
# @param notify [Zoidberg::Shell] actor to notify
|
22
|
+
def initialize(queue, notify)
|
26
23
|
@queue = queue
|
27
|
-
@message_queue = message_queue
|
28
24
|
@notify = notify
|
29
25
|
end
|
30
26
|
|
27
|
+
# Start message collection when restarted
|
28
|
+
def restarted
|
29
|
+
start!
|
30
|
+
end
|
31
|
+
|
32
|
+
# Start the collector
|
33
|
+
def start!
|
34
|
+
current_self.async.collect_messages
|
35
|
+
end
|
36
|
+
|
31
37
|
# Collect messages from remote queue
|
32
38
|
#
|
33
39
|
# @return [TrueClass]
|
@@ -40,20 +46,20 @@ module Carnivore
|
|
40
46
|
begin
|
41
47
|
payload = MultiJson.load(payload).to_smash
|
42
48
|
rescue MultiJson::ParseError
|
43
|
-
|
49
|
+
debug 'Received payload not in JSON format. Failed to parse!'
|
44
50
|
end
|
45
51
|
debug "Message received: #{payload.inspect}"
|
46
52
|
debug "Message info: #{info.inspect}"
|
47
53
|
debug "Message metadata: #{metadata.inspect}"
|
48
|
-
|
54
|
+
new_message = Smash.new(
|
49
55
|
:raw => Smash.new(
|
50
56
|
:info => info,
|
51
57
|
:metadata => metadata
|
52
58
|
),
|
53
59
|
:content => payload
|
54
60
|
)
|
55
|
-
debug "Sending new
|
56
|
-
notify.signal(:new_messages)
|
61
|
+
debug "Sending new message signal to: #{notify}"
|
62
|
+
notify.signal(:new_messages, new_message)
|
57
63
|
end
|
58
64
|
true
|
59
65
|
end
|
@@ -6,6 +6,8 @@ module Carnivore
|
|
6
6
|
# RabbitMQ based carnivore source
|
7
7
|
class Rabbitmq < Source
|
8
8
|
|
9
|
+
option :cache_signals
|
10
|
+
|
9
11
|
autoload :MessageCollector, 'carnivore-rabbitmq/message_collector'
|
10
12
|
|
11
13
|
# @return [Smash] initialization arguments
|
@@ -20,8 +22,6 @@ module Carnivore
|
|
20
22
|
attr_reader :queue
|
21
23
|
# @return [String] routing key
|
22
24
|
attr_reader :routing_key
|
23
|
-
# @return [Queue] message queue
|
24
|
-
attr_reader :message_queue
|
25
25
|
# @return [Carnviore::Source::Rabbitmq::MessageCollector] message collector
|
26
26
|
attr_reader :message_collector
|
27
27
|
|
@@ -33,9 +33,7 @@ module Carnivore
|
|
33
33
|
# @option init_args [Hash] :connection configuration hash for connection
|
34
34
|
# @option init_args [String, Symbol] :force_library :bunny or :march_hare
|
35
35
|
def setup(init_args={})
|
36
|
-
require 'carnivore-rabbitmq/message_collector'
|
37
36
|
@args = args.dup
|
38
|
-
@message_queue = Queue.new
|
39
37
|
@queue_name = args[:queue]
|
40
38
|
@exchange_name = args[:exchange]
|
41
39
|
debug "Creating Rabbitmq source instance <#{name}>"
|
@@ -49,27 +47,15 @@ module Carnivore
|
|
49
47
|
# Start the message collection
|
50
48
|
def start_collector
|
51
49
|
unless(@collecting)
|
52
|
-
@
|
53
|
-
|
54
|
-
message_collector.async.collect_messages
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Restart collector if unexpectedly failed
|
59
|
-
#
|
60
|
-
# @param object [Actor] crashed actor
|
61
|
-
# @param reason [Exception, NilClass]
|
62
|
-
def collector_failure(object, reason)
|
63
|
-
if(reason && object == message_collector)
|
64
|
-
error "Message collector unexpectedly failed: #{reason} (restarting)"
|
65
|
-
start_collector
|
50
|
+
@message_collector = MessageCollector.new(queue, current_actor)
|
51
|
+
message_collector.start!
|
66
52
|
end
|
67
53
|
end
|
68
54
|
|
69
55
|
# Destroy message collector
|
70
56
|
#
|
71
57
|
# @return [TrueClass]
|
72
|
-
def
|
58
|
+
def terminate
|
73
59
|
connection.close if connection
|
74
60
|
if(message_collector && message_collector.alive?)
|
75
61
|
message_collector.terminate
|
@@ -109,10 +95,7 @@ module Carnivore
|
|
109
95
|
# @return [Hash] payload
|
110
96
|
def receive(*_)
|
111
97
|
start_collector
|
112
|
-
|
113
|
-
wait(:new_messages)
|
114
|
-
end
|
115
|
-
message_queue.pop
|
98
|
+
wait(:new_messages)
|
116
99
|
end
|
117
100
|
|
118
101
|
# Transmit payload to connection
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carnivore-rabbitmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bunny
|