Class: JSparrow::Messaging::Listener
- Includes:
- MessageListener
- Defined in:
- lib/messaging.rb
Overview
Ouvintes de mensagens.
TODO: Completar a implementacao. Ainda nao esta legal. (Ja dei um tapinha,
acho que agora ta bem proximo do que deve ser.)
Instance Attribute Summary collapse
-
#connection_factory_name ⇒ Object
readonly
Returns the value of attribute connection_factory_name.
-
#criteria_to_receiving ⇒ Object
readonly
Returns the value of attribute criteria_to_receiving.
-
#destination_name ⇒ Object
readonly
Returns the value of attribute destination_name.
Instance Method Summary collapse
-
#initialize(connection_factory, destination) ⇒ Listener
constructor
Estes parametros serao injetados pelo listener manager de acordo com o que houver sido definido pelos metodos connection_factory_name e destination_name.
-
#listen_to_destination(jndi_name) ⇒ Object
Nome JNDI do destino JMS que sera escutado.
-
#on_message(received_message) ⇒ Object
Faz o enriquecimento do objeto mensagem e delega para o metodo on_receive_message que, implementado pelas subclasses, efetivamente trata a mensagem.
-
#on_receive_message(received_message) ⇒ Object
E executado todas as vezes que chega uma mensagem que atenda aos criterios definido para este listener (na variavel de instancia @criteria_for_receiving).
-
#receive_only_in_criteria(criteria = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}) ⇒ Object
Criterios de selecao de mensagens, seguindo o padrao JMS.
-
#start_listening ⇒ Object
Inicia a escuta de mensagens.
-
#use_connection_factory(jndi_name) ⇒ Object
Nome JNDI da connection factory que ser usada para criar conexoes JMS.
Constructor Details
#initialize(connection_factory, destination) ⇒ Listener
Estes parametros serao injetados pelo listener manager de acordo com o que houver sido definido pelos metodos connection_factory_name e destination_name.
147 148 149 150 151 152 153 |
# File 'lib/messaging.rb', line 147 def initialize(connection_factory, destination) super(connection_factory, destination) @connection_factory_name = 'undefined' @destination_name = 'undefined' @criteria_to_receiving = {} end |
Instance Attribute Details
#connection_factory_name ⇒ Object (readonly)
Returns the value of attribute connection_factory_name.
141 142 143 |
# File 'lib/messaging.rb', line 141 def connection_factory_name @connection_factory_name end |
#criteria_to_receiving ⇒ Object (readonly)
Returns the value of attribute criteria_to_receiving.
141 142 143 |
# File 'lib/messaging.rb', line 141 def criteria_to_receiving @criteria_to_receiving end |
#destination_name ⇒ Object (readonly)
Returns the value of attribute destination_name.
141 142 143 |
# File 'lib/messaging.rb', line 141 def destination_name @destination_name end |
Instance Method Details
#listen_to_destination(jndi_name) ⇒ Object
Nome JNDI do destino JMS que sera escutado.
Invariavelmente deve ser usado pelas subclasses, para informar o nome da queue ou topico que sera escutado.
171 172 173 |
# File 'lib/messaging.rb', line 171 def listen_to_destination(jndi_name) @destination_name = jndi_name end |
#on_message(received_message) ⇒ Object
Faz o enriquecimento do objeto mensagem e delega para o metodo on_receive_message que, implementado pelas subclasses, efetivamente trata a mensagem.
Nao deve ser re-implementado por subclasses.
208 209 210 211 212 213 214 |
# File 'lib/messaging.rb', line 208 def () class << include MessageType end () end |
#on_receive_message(received_message) ⇒ Object
E executado todas as vezes que chega uma mensagem que atenda aos criterios definido para este listener (na variavel de instancia @criteria_for_receiving).
Invariavelmente deve ser re-implementado nas subclasses.
222 223 224 |
# File 'lib/messaging.rb', line 222 def () raise Error::AbstractMethodError.new('on_receive_message') end |
#receive_only_in_criteria(criteria = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}) ⇒ Object
Criterios de selecao de mensagens, seguindo o padrao JMS.
Invariavelmente as subclasses precisam usar esse metodo para definir os criterios de recebimento que este listener levara em conta.
181 182 183 184 |
# File 'lib/messaging.rb', line 181 def receive_only_in_criteria(criteria = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}) # Valor default para timeout, caso nao tenha sido informado @criteria_to_receiving[:timeout] = criteria[:timeout] || DEFAULT_RECEIVER_TIMEOUT end |
#start_listening ⇒ Object
Inicia a escuta de mensagens.
189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/messaging.rb', line 189 def start_listening # 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]) # Registra-se como ouvinte consumer. = self # Inicia a escuta de mensagens connection.start end |
#use_connection_factory(jndi_name) ⇒ Object
Nome JNDI da connection factory que ser usada para criar conexoes JMS.
Invariavelmente deve ser usado pelas subclasses para informar qual devera ser a connection factory usada por esse listener.
161 162 163 |
# File 'lib/messaging.rb', line 161 def use_connection_factory(jndi_name) @connection_factory_name = jndi_name end |