lambda-queuer 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/lambda-queuer.rb +21 -11
  2. metadata +3 -3
data/lib/lambda-queuer.rb CHANGED
@@ -4,11 +4,12 @@ require 'sourcify'
4
4
 
5
5
  class LambdaQueuer
6
6
  attr_accessor :queue
7
- def initialize(exchange, routing_key, host='127.0.0.1', port=5672)
8
- @host = host
9
- @port = port
10
- @exchange = exchange
11
- @routing_key = routing_key
7
+ def initialize(options = {})
8
+ @host = options[:host] || '127.0.0.1'
9
+ @port = options[:port] || 5672
10
+ @exchange = options[:exchange] || 'default_exchange'
11
+ @request_routing_key = options[:request_routing_key] || 'default_routing_key'
12
+ @response_routing_key = options[:response_routing_key]
12
13
  end
13
14
 
14
15
  def post(&block)
@@ -17,12 +18,21 @@ class LambdaQueuer
17
18
  connection = AMQP.connect(:host => @host, :port => @port)
18
19
  channel = AMQP::Channel.new(connection)
19
20
  exchange = channel.direct(@exchange, :auto_delete => true)
20
- @queue = channel.queue(@routing_key, :auto_delete => false, :passive => true)
21
- @queue.bind(exchange, :routing_key => @routing_key)
21
+ @queue = channel.queue(@request_routing_key, :auto_delete => true)
22
+ @queue.bind(exchange, :routing_key => @request_routing_key)
22
23
  v = block.to_source
23
- exchange.publish(v, :routing_key => @routing_key)
24
- EventMachine.add_timer(2) do
25
- connection.close { EventMachine.stop }
24
+ exchange.publish(v, :routing_key => @request_routing_key)
25
+ if (@response_routing_key)
26
+ @answer_queue = channel.queue(@response_routing_key, :auto_delete => true)
27
+ @answer_queue.bind(exchange, :routing_key => @response_routing_key)
28
+ @answer_queue.subscribe do |message|
29
+ puts "Received: #{message}"
30
+ connection.close { EventMachine.stop }
31
+ end
32
+ else
33
+ EventMachine.add_timer(2) do
34
+ connection.close { EventMachine.stop }
35
+ end
26
36
  end
27
37
  rescue => e
28
38
  puts e
@@ -31,5 +41,5 @@ class LambdaQueuer
31
41
  end
32
42
  end
33
43
 
34
- #LambdaQueuer.new('lambda_exchange', 'lambda').post {|all| all}
44
+ LambdaQueuer.new(:exchange => 'lambda_exchange', :request_routing_key => 'lambda', :response_routing_key => 'lambda_response').post {|data| true}
35
45
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lambda-queuer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Avishek Sen Gupta