Class: JSparrow::Messaging::Receiver

Inherits:
Base
  • Object
show all
Defined in:
lib/messaging.rb

Overview

Receptor de mensagens.

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from JSparrow::Messaging::Base

Instance Method Details

#receive_message(criteria_for_receiving = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}, &message_handler) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/messaging.rb', line 104

def receive_message(criteria_for_receiving = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}, &message_handler)
  # Cria uma conexao, uma sessao e um consumidor de qualquer tipo de mensagem
  connection = @connection_factory.create_connection
  session    = connection.create_session(false, Session::AUTO_ACKNOWLEDGE)
  consumer   = session.create_consumer(@destination, criteria_for_receiving[:selector])
  
  # Prepara a conexao para receber mensagens
  connection.start
  
  # Inicia o recebimento de mensagens
  timeout = criteria_for_receiving[:timeout] || DEFAULT_RECEIVER_TIMEOUT
  
  while (received_message = consumer.receive(timeout))
    # Inclui o modulo de identificacao de mensagem, util para o message_handler
    class << received_message
      include MessageType
    end
  
    # Delega o tratamento da mensagem para o bloco recebido
    message_handler.call(received_message)
  end
  
  # Fecha a conexao
  connection.close
end