Class: BunnyCarrot::BusinessActorObserver

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/bunny_carrot/business_actor_observer.rb

Class Method Summary collapse

Methods included from Logger

included, #logger

Class Method Details

.update(time, message_args, result, exception) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bunny_carrot/business_actor_observer.rb', line 5

def self.update(time, message_args, result, exception)
  message = message_args.first
  logger.info "Observing business..."
  if result
    message.fetch(:acknowledge_proc).call
    logger.info 'Message is acknowledged'
  else
    logger.info "Rejected because of: #{exception.inspect}"
    message_attrs = Hamster.hash({ queue_name:       message.fetch(:queue_name),
                                   payload:          message.fetch(:payload),
                                   message_headers:  message.fetch(:message_headers),
                                   acknowledge_proc: message.fetch(:acknowledge_proc) })
    worker        = message.fetch(:worker)
    logger.info 'Defining exception handling strategy...'
    strategy = worker.strategy(message_attrs, exception)
    strategy.perform
  end
end