pipeline_toolkit 1.2.22 → 1.2.23

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -140,3 +140,12 @@ To make the steps available to your application's cucumber features simply put t
140
140
  * Tidy up logging. Feels horrible that we're insisting that SysLogger is used. Want to abstract this out and let user decide which logging framework to use. Also we're hard coding that logs are output to ~/pipeline_toolkit. yuk.
141
141
 
142
142
  * Add tmp path as a argument (hardcoded to /tmp at mo)
143
+
144
+ * Tidy up error handling. Should raise custom (and more descriptive) error messages. Particularly for broken pipes
145
+
146
+ * Refactor /lib/amqp modules. Don't like it how they assume an 'options' variable exists
147
+
148
+ * Write tests around queue setup for msg_push and msg_sub
149
+
150
+
151
+
@@ -94,6 +94,7 @@ module PipelineToolkit
94
94
  # routing messages depending on the exchange configuration.
95
95
  #
96
96
  def bind_queue(routing_key = '')
97
+ routing_key = options[:queue].split(":").last if options[:queue] && options[:queue].include?(":")
97
98
  DefaultLogger.debug("Amqp::Abstract#bind_queue(routing_key = '')") if options[:env] == "development"
98
99
  unless routing_key.nil? || routing_key.empty?
99
100
  @queue.bind(@exchange, :key => routing_key)
@@ -24,7 +24,7 @@ module PipelineToolkit
24
24
  @channel.prefetch(25)
25
25
  initialize_exchange
26
26
  initialize_queue
27
- bind_queue
27
+ bind_queue()
28
28
  end
29
29
 
30
30
  ##
@@ -29,11 +29,12 @@ module PipelineToolkit
29
29
  @mq.queue(queue).status[:message_count]
30
30
  end
31
31
 
32
- def send_messages(exchange, messages)
33
- exchange = @mq.exchange(exchange, :type => :fanout)
32
+ def send_messages(exchange, messages, exchange_type = :fanout)
33
+ exchange = @mq.exchange(exchange, :passive => true, :type => exchange_type)
34
34
  messages.each do |message|
35
+ opts = message.has_key?('routing_key') ? {:key => message['routing_key']} : {}
35
36
  message.default = nil
36
- exchange.publish(MessageCoder.encode(message))
37
+ exchange.publish(MessageCoder.encode(message), opts)
37
38
  end
38
39
  end
39
40
 
@@ -17,6 +17,11 @@ When /^I input these messages to exchange "(\w+)":$/ do |queue, messages|
17
17
  @amqp.send_messages(queue, input_messages)
18
18
  end
19
19
 
20
+ When /^I input these messages to exchange "(\w+)" of type "(\w+)":$/ do |queue, type, messages|
21
+ input_messages = messages.hashes
22
+ @amqp.send_messages(queue, input_messages, type.to_sym)
23
+ end
24
+
20
25
  Then /^these messages are on queue "(\w+)":$/ do |queue, expected_messages|
21
26
  received_messages = @amqp.receive_messages(queue, expected_messages.rows.size)
22
27
  expected_messages.diff!(received_messages.map! { |h| h.keys_and_values_as_strings } )
@@ -109,6 +109,9 @@ module PipelineToolkit
109
109
  else
110
110
  process_standard(message)
111
111
  end
112
+ rescue MessagePack::UnpackError => e
113
+ DefaultLogger.error("Couldn't unpack message: #{message.inspect}")
114
+ raise e
112
115
  end
113
116
 
114
117
  ##
@@ -13,7 +13,7 @@ module PipelineToolkit
13
13
 
14
14
  # Sort key order
15
15
  def format_message(message)
16
- message = message.sort { |a, b| a[0].to_s <=> a[1].to_s }
16
+ message = message.sort { |a, b| a[0].to_s <=> b[0].to_s }
17
17
  str = "{"
18
18
  message.each_with_index do |item, i|
19
19
  str << "#{item[0].inspect}:#{item[1].inspect}"
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 2
8
- - 22
9
- version: 1.2.22
8
+ - 23
9
+ version: 1.2.23
10
10
  platform: ruby
11
11
  authors:
12
12
  - Aisha Fenton
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-06 00:00:00 +12:00
18
+ date: 2010-09-08 00:00:00 +12:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency