rservicebus 0.0.79 → 0.1.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.
- data/bin/ReturnErroredMessagesToSourceQueue +47 -2
- data/lib/rservicebus/Agent.rb +1 -4
- data/lib/rservicebus/Agent/Beanstalk.rb +6 -7
- data/lib/rservicebus/ConfigureMQ.rb +0 -4
- data/lib/rservicebus/Host.rb +2 -2
- data/lib/rservicebus/MQ.rb +1 -1
- data/lib/rservicebus/Transporter.rb +2 -2
- metadata +2 -8
- data/bin/ReturnErroredMessagesToSourceQueueBeanstalk +0 -49
- data/bin/ReturnErroredMessagesToSourceQueueBunny +0 -51
- data/lib/rservicebus/Agent/Bunny.rb +0 -48
- data/lib/rservicebus/MQ/Bunny.rb +0 -54
@@ -1,4 +1,49 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require "yaml"
|
4
|
+
|
5
|
+
require "beanstalk-client"
|
6
|
+
|
7
|
+
require "rservicebus"
|
8
|
+
|
9
|
+
begin
|
10
|
+
host = 'localhost:11300'
|
11
|
+
errorQueueName = "error"
|
12
|
+
beanstalk = Beanstalk::Pool.new([host])
|
13
|
+
|
14
|
+
tubes = beanstalk.list_tubes[host]
|
15
|
+
if !tubes.include?(errorQueueName) then
|
16
|
+
abort( "Nothing waiting on the Beanstalk error queue" )
|
17
|
+
end
|
18
|
+
|
19
|
+
tubeStats = beanstalk.stats_tube(errorQueueName)
|
20
|
+
number_of_messages = tubeStats["current-jobs-ready"]
|
21
|
+
puts
|
22
|
+
puts "Attempting to return #{number_of_messages} to their source queue"
|
23
|
+
puts
|
24
|
+
|
25
|
+
begin
|
26
|
+
beanstalk.watch(errorQueueName)
|
27
|
+
1.upto(number_of_messages) do |request_nbr|
|
28
|
+
job = beanstalk.reserve 1
|
29
|
+
payload = job.body
|
30
|
+
|
31
|
+
puts "#" + request_nbr.to_s + ": " + payload
|
32
|
+
msg = YAML::load(payload)
|
33
|
+
queueName = msg.getLastErrorMsg.sourceQueue
|
34
|
+
|
35
|
+
beanstalk.use( queueName )
|
36
|
+
beanstalk.put( payload )
|
37
|
+
|
38
|
+
job.delete
|
39
|
+
end
|
40
|
+
rescue Exception => e
|
41
|
+
if e.message == "TIMED_OUT" then
|
42
|
+
else
|
43
|
+
raise
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
rescue Beanstalk::NotConnected=>e
|
48
|
+
puts "Beanstalk not running"
|
49
|
+
end
|
data/lib/rservicebus/Agent.rb
CHANGED
@@ -8,13 +8,10 @@ module RServiceBus
|
|
8
8
|
if uri.scheme == "beanstalk" then
|
9
9
|
require "rservicebus/Agent/Beanstalk"
|
10
10
|
return Agent_Beanstalk.new()
|
11
|
-
elsif uri.scheme == "bunny" then
|
12
|
-
require "rservicebus/Agent/Bunny"
|
13
|
-
return Agent_Bunny.new()
|
14
11
|
else
|
15
12
|
raise StandardError.new( "Scheme not recognised" )
|
16
13
|
|
17
14
|
end
|
18
15
|
end
|
19
16
|
end
|
20
|
-
end
|
17
|
+
end
|
@@ -17,19 +17,18 @@ class Agent_Beanstalk
|
|
17
17
|
# @param [String] returnAddress the name of a queue to send replies to
|
18
18
|
def sendMsg(messageObj, queueName, returnAddress=nil)
|
19
19
|
msg = RServiceBus::Message.new( messageObj, returnAddress )
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
|
22
22
|
if queueName.index( "@" ).nil? then
|
23
23
|
q = queueName
|
24
|
-
|
24
|
+
else
|
25
25
|
parts = queueName.split( "@" )
|
26
26
|
msg.setRemoteQueueName( parts[0] )
|
27
27
|
msg.setRemoteHostName( parts[1] )
|
28
|
-
|
28
|
+
q = 'transport-out'
|
29
29
|
end
|
30
|
-
|
31
|
-
|
32
|
-
serialized_object = YAML::dump(msg)
|
30
|
+
|
31
|
+
serialized_object = YAML::dump(msg)
|
33
32
|
|
34
33
|
@beanstalk.use( q )
|
35
34
|
@beanstalk.put( serialized_object )
|
@@ -13,10 +13,6 @@ module RServiceBus
|
|
13
13
|
require "rservicebus/MQ/Beanstalk"
|
14
14
|
mq = MQ_Beanstalk.new( uri, timeout )
|
15
15
|
|
16
|
-
when "bunny"
|
17
|
-
require "rservicebus/MQ/Bunny"
|
18
|
-
mq = MQ_Bunny.new( uri, timeout )
|
19
|
-
|
20
16
|
else
|
21
17
|
abort("Scheme, #{uri.scheme}, not recognised when configuring mq, #{string}");
|
22
18
|
end
|
data/lib/rservicebus/Host.rb
CHANGED
@@ -330,11 +330,11 @@ module RServiceBus
|
|
330
330
|
# @param [String] queueName endpoint to which the msg will be sent
|
331
331
|
def _SendAlreadyWrappedAndSerialised( serialized_object, queueName )
|
332
332
|
log "Bus._SendAlreadyWrappedAndSerialised", true
|
333
|
-
|
333
|
+
|
334
334
|
if !@config.forwardSentMessagesTo.nil? then
|
335
335
|
@mq.send( @config.forwardSentMessagesTo, serialized_object )
|
336
336
|
end
|
337
|
-
|
337
|
+
|
338
338
|
@mq.send( queueName, serialized_object )
|
339
339
|
end
|
340
340
|
|
data/lib/rservicebus/MQ.rb
CHANGED
@@ -11,7 +11,7 @@ module RServiceBus
|
|
11
11
|
|
12
12
|
# Resources are attached resources, and can be specified using the URI syntax.
|
13
13
|
#
|
14
|
-
# @param [URI] uri the type and location of queue, eg
|
14
|
+
# @param [URI] uri the type and location of queue, eg beanstalk://127.0.0.1/foo
|
15
15
|
# @param [Integer] timeout the amount of time to wait for a msg to arrive
|
16
16
|
def initialize( uri, timeout )
|
17
17
|
@timeout = timeout
|
@@ -52,7 +52,7 @@ class Transporter
|
|
52
52
|
#Get the next job from the source queue
|
53
53
|
job = @source.reserve @timeout
|
54
54
|
msg = YAML::load(job.body)
|
55
|
-
|
55
|
+
|
56
56
|
log "job: #{job.body}", true
|
57
57
|
|
58
58
|
|
@@ -63,7 +63,7 @@ class Transporter
|
|
63
63
|
|
64
64
|
# Open port 27018 to forward to 127.0.0.11300 on the remote host
|
65
65
|
gateway.open('127.0.0.1', 11300, 27018)
|
66
|
-
|
66
|
+
|
67
67
|
log "Connect to destination beanstalk"
|
68
68
|
begin
|
69
69
|
destinationUrl = '127.0.0.1:27018'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rservicebus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A Ruby interpretation of NServiceBus
|
15
15
|
email: guy@guyirvine.com
|
@@ -17,15 +17,12 @@ executables:
|
|
17
17
|
- rservicebus
|
18
18
|
- rservicebus-init
|
19
19
|
- ReturnErroredMessagesToSourceQueue
|
20
|
-
- ReturnErroredMessagesToSourceQueueBeanstalk
|
21
|
-
- ReturnErroredMessagesToSourceQueueBunny
|
22
20
|
- SendEmptyMessage
|
23
21
|
- rservicebus-transport
|
24
22
|
extensions: []
|
25
23
|
extra_rdoc_files: []
|
26
24
|
files:
|
27
25
|
- lib/rservicebus/Agent/Beanstalk.rb
|
28
|
-
- lib/rservicebus/Agent/Bunny.rb
|
29
26
|
- lib/rservicebus/Agent.rb
|
30
27
|
- lib/rservicebus/AppResource/Dir.rb
|
31
28
|
- lib/rservicebus/AppResource/File.rb
|
@@ -58,7 +55,6 @@ files:
|
|
58
55
|
- lib/rservicebus/Monitor/XmlDir.rb
|
59
56
|
- lib/rservicebus/Monitor.rb
|
60
57
|
- lib/rservicebus/MQ/Beanstalk.rb
|
61
|
-
- lib/rservicebus/MQ/Bunny.rb
|
62
58
|
- lib/rservicebus/MQ.rb
|
63
59
|
- lib/rservicebus/Saga.rb
|
64
60
|
- lib/rservicebus/Stats.rb
|
@@ -72,8 +68,6 @@ files:
|
|
72
68
|
- lib/rservicebus/Transporter.rb
|
73
69
|
- lib/rservicebus.rb
|
74
70
|
- bin/ReturnErroredMessagesToSourceQueue
|
75
|
-
- bin/ReturnErroredMessagesToSourceQueueBeanstalk
|
76
|
-
- bin/ReturnErroredMessagesToSourceQueueBunny
|
77
71
|
- bin/rservicebus
|
78
72
|
- bin/rservicebus-init
|
79
73
|
- bin/rservicebus-transport
|
@@ -1,49 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "yaml"
|
4
|
-
|
5
|
-
require "beanstalk-client"
|
6
|
-
|
7
|
-
require "rservicebus"
|
8
|
-
|
9
|
-
begin
|
10
|
-
host = 'localhost:11300'
|
11
|
-
errorQueueName = "error"
|
12
|
-
beanstalk = Beanstalk::Pool.new([host])
|
13
|
-
|
14
|
-
tubes = beanstalk.list_tubes[host]
|
15
|
-
if !tubes.include?(errorQueueName) then
|
16
|
-
abort( "Nothing waiting on the Beanstalk error queue" )
|
17
|
-
end
|
18
|
-
|
19
|
-
tubeStats = beanstalk.stats_tube(errorQueueName)
|
20
|
-
number_of_messages = tubeStats["current-jobs-ready"]
|
21
|
-
puts
|
22
|
-
puts "Attempting to return #{number_of_messages} to their source queue"
|
23
|
-
puts
|
24
|
-
|
25
|
-
begin
|
26
|
-
beanstalk.watch(errorQueueName)
|
27
|
-
1.upto(number_of_messages) do |request_nbr|
|
28
|
-
job = beanstalk.reserve 1
|
29
|
-
payload = job.body
|
30
|
-
|
31
|
-
puts "#" + request_nbr.to_s + ": " + payload
|
32
|
-
msg = YAML::load(payload)
|
33
|
-
queueName = msg.getLastErrorMsg.sourceQueue
|
34
|
-
|
35
|
-
beanstalk.use( queueName )
|
36
|
-
beanstalk.put( payload )
|
37
|
-
|
38
|
-
job.delete
|
39
|
-
end
|
40
|
-
rescue Exception => e
|
41
|
-
if e.message == "TIMED_OUT" then
|
42
|
-
else
|
43
|
-
raise
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
rescue Beanstalk::NotConnected=>e
|
48
|
-
puts "Beanstalk not running"
|
49
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "yaml"
|
4
|
-
|
5
|
-
require "bunny"
|
6
|
-
|
7
|
-
require "rservicebus"
|
8
|
-
|
9
|
-
host = 'localhost'
|
10
|
-
port = '5672'
|
11
|
-
errorQueueName = "error"
|
12
|
-
|
13
|
-
begin
|
14
|
-
bunny = Bunny.new(:host=>host, :port=>port)
|
15
|
-
bunny.start
|
16
|
-
direct_exchange = bunny.exchange('rservicebus.agent')
|
17
|
-
|
18
|
-
q = bunny.queue(errorQueueName)
|
19
|
-
|
20
|
-
number_of_messages = 0
|
21
|
-
loop = true
|
22
|
-
while loop do
|
23
|
-
msg = q.pop[:payload]
|
24
|
-
if msg == :queue_empty then
|
25
|
-
loop = false
|
26
|
-
else
|
27
|
-
number_of_messages++
|
28
|
-
|
29
|
-
msg = YAML::load(msg)
|
30
|
-
|
31
|
-
queueName = msg.getLastErrorMsg.sourceQueue
|
32
|
-
sq = bunny.queue(queueName)
|
33
|
-
sq.bind(@direct_exchange)
|
34
|
-
#q.publish( serialized_object )
|
35
|
-
|
36
|
-
@direct_exchange.publish(msg)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
|
41
|
-
if number_of_messages == 0 then
|
42
|
-
puts "Nothing waiting on RabbitMq error queue"
|
43
|
-
else
|
44
|
-
|
45
|
-
puts "Returned #{number_of_messages} to their source queue"
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
rescue Bunny::ConnectionError, Bunny::ServerDownError => e
|
50
|
-
abort( "RabbitMq not running" )
|
51
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module RServiceBus
|
2
|
-
require 'bunny'
|
3
|
-
|
4
|
-
#A means for a stand-alone process to interact with the bus, without being a full
|
5
|
-
#rservicebus application
|
6
|
-
class Agent_Bunny
|
7
|
-
@bunny
|
8
|
-
|
9
|
-
def initialize(host='localhost')
|
10
|
-
@bunny = Bunny.new(:host=>host)
|
11
|
-
@bunny.start
|
12
|
-
@direct_exchange = @bunny.exchange('rservicebus.agent')
|
13
|
-
end
|
14
|
-
|
15
|
-
# Put a msg on the bus
|
16
|
-
#
|
17
|
-
# @param [Object] messageObj The msg to be sent
|
18
|
-
# @param [String] queueName the name of the queue to be send the msg to
|
19
|
-
# @param [String] returnAddress the name of a queue to send replies to
|
20
|
-
def sendMsg(messageObj, queueName, returnAddress=nil)
|
21
|
-
msg = RServiceBus::Message.new( messageObj, returnAddress )
|
22
|
-
serialized_object = YAML::dump(msg)
|
23
|
-
|
24
|
-
q = @bunny.queue(queueName)
|
25
|
-
q.bind(@direct_exchange)
|
26
|
-
#q.publish( serialized_object )
|
27
|
-
|
28
|
-
@direct_exchange.publish(serialized_object)
|
29
|
-
end
|
30
|
-
|
31
|
-
# Gives an agent a mean to receive replies
|
32
|
-
#
|
33
|
-
# @param [String] queueName the name of the queue to monitor for messages
|
34
|
-
def checkForReply( queueName )
|
35
|
-
q = @bunny.queue(queueName)
|
36
|
-
|
37
|
-
loop = true
|
38
|
-
while loop do
|
39
|
-
msg = q.pop[:payload]
|
40
|
-
loop = ( msg == :queue_empty )
|
41
|
-
end
|
42
|
-
|
43
|
-
@msg = YAML::load(msg)
|
44
|
-
return @msg.msg
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
data/lib/rservicebus/MQ/Bunny.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
module RServiceBus
|
2
|
-
|
3
|
-
require "bunny"
|
4
|
-
require "rservicebus/MQ"
|
5
|
-
|
6
|
-
# RabbitMQ client implementation.
|
7
|
-
#
|
8
|
-
class MQ_Bunny<MQ
|
9
|
-
@uri
|
10
|
-
|
11
|
-
# Connect to the broker
|
12
|
-
#
|
13
|
-
def connect( host, port )
|
14
|
-
port ||= 5672
|
15
|
-
|
16
|
-
@bunny = Bunny.new(:host=>host, :port=>port)
|
17
|
-
@bunny.start
|
18
|
-
@pop_exch = @bunny.exchange('rservicebus.pop')
|
19
|
-
@send_exch = @bunny.exchange('rservicebus.send')
|
20
|
-
end
|
21
|
-
|
22
|
-
# Connect to the queue
|
23
|
-
#
|
24
|
-
def subscribe( queueName )
|
25
|
-
@queue = @bunny.queue( queueName )
|
26
|
-
@queue.bind( @pop_exch );
|
27
|
-
end
|
28
|
-
|
29
|
-
# Get next msg from queue
|
30
|
-
def pop
|
31
|
-
msg = @queue.pop(:ack => true)[:payload]
|
32
|
-
|
33
|
-
if msg == :queue_empty then
|
34
|
-
raise NoMsgToProcess.new
|
35
|
-
end
|
36
|
-
|
37
|
-
return msg
|
38
|
-
end
|
39
|
-
|
40
|
-
# "Commit" the pop to the queue
|
41
|
-
def ack
|
42
|
-
@queue.ack
|
43
|
-
end
|
44
|
-
|
45
|
-
# Send a msg to a queue
|
46
|
-
def send( queueName, msg )
|
47
|
-
queue = @bunny.queue(queueName)
|
48
|
-
queue.bind(@send_exch)
|
49
|
-
@send_exch.publish(msg)
|
50
|
-
queue.unbind(@send_exch)
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
end
|