Class: EventQ::RabbitMq::SubscriptionManager

Inherits:
Object
  • Object
show all
Defined in:
lib/eventq_rabbitmq/rabbitmq_subscription_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ SubscriptionManager

Returns a new instance of SubscriptionManager.



5
6
7
8
9
10
11
12
# File 'lib/eventq_rabbitmq/rabbitmq_subscription_manager.rb', line 5

def initialize(options = {})
  if options[:client] == nil
    raise ':client (QueueClient) must be specified.'.freeze
  end
  @client = options[:client]
  @queue_manager = QueueManager.new
  @event_raised_exchange = EventQ::EventRaisedExchange.new
end

Instance Method Details

#subscribe(event_type, queue) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/eventq_rabbitmq/rabbitmq_subscription_manager.rb', line 14

def subscribe(event_type, queue)

  _event_type = EventQ.create_event_type(event_type)

  connection = @client.get_connection
  channel = connection.create_channel

  queue = @queue_manager.get_queue(channel, queue)
  exchange = @queue_manager.get_exchange(channel, @event_raised_exchange)

  queue.bind(exchange, :routing_key => _event_type)

  channel.close
  connection.close

  EventQ.logger.debug do
    "[#{self.class} #subscribe] - Subscribing queue: #{queue.name} to Exchange: #{_event_type}"
  end

  return true
end

#unsubscribe(queue) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/eventq_rabbitmq/rabbitmq_subscription_manager.rb', line 36

def unsubscribe(queue)

  connection = @client.get_connection
  channel = connection.create_channel

  queue = @queue_manager.get_queue(channel, queue)
  exchange = @queue_manager.get_exchange(channel, @event_raised_exchange)

  queue.unbind(exchange)

  channel.close
  connection.close

  return true
end