smith 0.5.12 → 0.5.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/bin/smithctl +16 -19
  2. data/lib/smith.rb +25 -41
  3. data/lib/smith/agent.rb +96 -66
  4. data/lib/smith/agent_monitoring.rb +3 -4
  5. data/lib/smith/agent_process.rb +16 -9
  6. data/lib/smith/amqp_errors.rb +53 -0
  7. data/lib/smith/application/agency.rb +23 -20
  8. data/lib/smith/bootstrap.rb +3 -3
  9. data/lib/smith/command.rb +2 -2
  10. data/lib/smith/command_base.rb +4 -0
  11. data/lib/smith/commands/agency/agents.rb +19 -19
  12. data/lib/smith/commands/agency/kill.rb +6 -2
  13. data/lib/smith/commands/agency/list.rb +2 -4
  14. data/lib/smith/commands/agency/logger.rb +27 -28
  15. data/lib/smith/commands/agency/metadata.rb +1 -5
  16. data/lib/smith/commands/agency/object_count.rb +13 -11
  17. data/lib/smith/commands/agency/restart.rb +18 -9
  18. data/lib/smith/commands/agency/start.rb +34 -25
  19. data/lib/smith/commands/agency/stop.rb +58 -41
  20. data/lib/smith/commands/agency/version.rb +10 -10
  21. data/lib/smith/commands/common.rb +7 -4
  22. data/lib/smith/commands/smithctl/acl.rb +46 -37
  23. data/lib/smith/commands/smithctl/commands.rb +1 -1
  24. data/lib/smith/commands/smithctl/firehose.rb +30 -0
  25. data/lib/smith/commands/smithctl/pop.rb +39 -32
  26. data/lib/smith/commands/smithctl/push.rb +70 -51
  27. data/lib/smith/commands/smithctl/rm.rb +32 -9
  28. data/lib/smith/commands/smithctl/subscribe.rb +36 -0
  29. data/lib/smith/commands/smithctl/top.rb +1 -1
  30. data/lib/smith/exceptions.rb +2 -0
  31. data/lib/smith/messaging/acl/agency_command.proto +4 -0
  32. data/lib/smith/messaging/acl/default.rb +8 -1
  33. data/lib/smith/messaging/amqp_options.rb +2 -2
  34. data/lib/smith/messaging/message_counter.rb +21 -0
  35. data/lib/smith/messaging/payload.rb +47 -49
  36. data/lib/smith/messaging/queue.rb +50 -0
  37. data/lib/smith/messaging/queue_definition.rb +18 -0
  38. data/lib/smith/messaging/queue_factory.rb +20 -29
  39. data/lib/smith/messaging/receiver.rb +211 -173
  40. data/lib/smith/messaging/requeue.rb +91 -0
  41. data/lib/smith/messaging/sender.rb +184 -28
  42. data/lib/smith/messaging/util.rb +72 -0
  43. data/lib/smith/queue_definitions.rb +11 -0
  44. data/lib/smith/version.rb +1 -1
  45. metadata +18 -10
  46. data/lib/smith/messaging/endpoint.rb +0 -116
@@ -1,116 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- module Smith
3
- module Messaging
4
- class Endpoint
5
- include Logger
6
-
7
- attr_accessor :denormalized_queue_name, :queue_name
8
-
9
- def initialize(queue_name, options)
10
- @denormalized_queue_name = queue_name
11
- @queue_name = normalise(queue_name)
12
- @message_counts = Hash.new(0)
13
- @options = options
14
- end
15
-
16
- def ready(&blk)
17
- Smith.channel.direct(@queue_name, options.exchange) do |exchange|
18
- @exchange = exchange
19
-
20
- exchange.on_return do |basic_return,metadata,payload|
21
- logger.error { "#{ACL::Payload.decode(payload.clone, metadata.type)} was returned! Exchange: #{reply_code.exchange}, reply_code = #{basic_return.reply_code}, reply_text = #{basic_return.reply_text}" }
22
- logger.error { "Properties: #{metadata.properties}" }
23
- end
24
-
25
- logger.verbose { "Creating queue: [queue]:#{denormalized_queue_name} [options]:#{options.queue}" }
26
-
27
- Smith.channel.queue(queue_name, options.queue) do |queue|
28
- @queue = queue
29
- @options.queue_name = queue_name
30
- queue.bind(exchange, :routing_key => queue_name)
31
- blk.call(self)
32
- end
33
- end
34
- end
35
-
36
- def number_of_messages
37
- @queue.status do |num_messages, num_consumers|
38
- yield num_messages
39
- end
40
- end
41
-
42
- def number_of_consumers
43
- @queue.status do |num_messages, num_consumers|
44
- yield num_consumers
45
- end
46
- end
47
-
48
- # Return the total number of messages sent or received for the named queue.
49
- def counter
50
- @message_counts[queue_name]
51
- end
52
-
53
- def messages?(blk=nil, err=proc {logger.debug { "No messages on #{@denormalized_queue_name}" } })
54
- number_of_messages do |n|
55
- if n > 0
56
- if blk.respond_to? :call
57
- blk.call(self)
58
- else
59
- yield self
60
- end
61
- else
62
- err.call
63
- end
64
- end
65
- end
66
-
67
- def consumers?(blk=nil, err=proc {logger.debug { "Nothing listening on #{@denormalized_queue_name}" } })
68
- number_of_consumers do |n|
69
- if n > 0
70
- if blk.respond_to? :call
71
- blk.call(self)
72
- else
73
- yield self
74
- end
75
- else
76
- if err.respond_to? :call
77
- err.call
78
- end
79
- end
80
- end
81
- end
82
-
83
- def timeout(timeout, blk=nil, &block)
84
- cancel_timeout
85
- blk ||= block
86
- @timeout = EventMachine::Timer.new(timeout, blk)
87
- end
88
-
89
- protected
90
-
91
- attr_accessor :exchange, :queue, :options
92
-
93
- def increment_counter(value=1)
94
- @message_counts[queue_name] += value
95
- end
96
-
97
- def denormalise(name)
98
- name.sub(/#{Regexp.escape("#{Smith.config.smith.namespace}.")}/, '')
99
- end
100
-
101
- def normalise(name)
102
- "#{Smith.config.smith.namespace}.#{name}"
103
- end
104
-
105
- def cancel_timeout
106
- @timeout.cancel if @timeout
107
- end
108
-
109
- private
110
-
111
- def random(prefix = '', suffix = '')
112
- "#{prefix}#{SecureRandom.hex(8)}#{suffix}"
113
- end
114
- end
115
- end
116
- end