Class: JSparrow::Connection::Listener
- Inherits:
-
Object
- Object
- JSparrow::Connection::Listener
- Includes:
- MessageListener
- Defined in:
- lib/listener.rb
Overview
Ouvintes de mensagens.
Sao como clientes JMS, mas apenas para recebimento de mensagens.
Class Method Summary collapse
-
.listen_to(destination) ⇒ Object
Nome (configurado no setup da conexao) do destino JMS que sera escutado.
-
.receive_only_in_criteria(criteria = {:selector => ''}) ⇒ Object
Criterios de selecao de mensagens, seguindo o padrao JMS.
Instance Method Summary collapse
-
#initialize(connection) ⇒ Listener
constructor
A new instance of Listener.
- #is_listening? ⇒ Boolean
-
#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).
-
#start_listening ⇒ Object
Inicia a escuta de mensagens.
-
#stop_listening ⇒ Object
Finaliza a escuta de mensagens.
Constructor Details
#initialize(connection) ⇒ Listener
Returns a new instance of Listener.
41 42 43 |
# File 'lib/listener.rb', line 41 def initialize(connection) @connection = connection end |
Class Method Details
.listen_to(destination) ⇒ Object
Nome (configurado no setup da conexao) do destino JMS que sera escutado.
Invariavelmente deve ser usado pelas subclasses, para informar o nome da queue ou topico que sera escutado.
listen_to :queue => :registered_name_of_queue listen_to :topic => :registered_name_of_topic
25 26 27 |
# File 'lib/listener.rb', line 25 def self.listen_to(destination) configure(:listen_to_destination, destination) end |
.receive_only_in_criteria(criteria = {:selector => ''}) ⇒ Object
Criterios de selecao de mensagens, seguindo o padrao JMS.
Invariavelmente as subclasses precisam usar esse metodo, se quiserem definir os criterios de recebimento que este listener levara em conta.
receive_only_in_criteria :selector => “recipient = ‘jsparrow-spec’ and to_listener = ‘TestQueueListener’”
37 38 39 |
# File 'lib/listener.rb', line 37 def self.receive_only_in_criteria(criteria = {:selector => ''}) configure(:criteria_to_receiving, criteria) end |
Instance Method Details
#is_listening? ⇒ Boolean
45 46 47 |
# File 'lib/listener.rb', line 45 def is_listening? @connection.is_opened? 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.
88 89 90 91 92 93 94 |
# File 'lib/listener.rb', line 88 def () class << include Messaging::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.
102 103 104 |
# File 'lib/listener.rb', line 102 def () raise Error::AbstractMethodError.new(self.class.superclass, 'on_receive_message') end |
#start_listening ⇒ Object
Inicia a escuta de mensagens.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/listener.rb', line 52 def start_listening @connection.open connection_factory, destination = lookup_resources selector = criteria_to_receiving[:selector] if respond_to? :criteria_to_receiving # Cria uma conexao para escuta de mensagens @listening_connection = connection_factory.create_connection # Cria uma sessao e um consumidor de qualquer tipo de mensagem session = @listening_connection.create_session(false, Session::AUTO_ACKNOWLEDGE) consumer = session.create_consumer(destination, selector) # Registra-se como ouvinte consumer. = self # Inicia a escuta de mensagens @listening_connection.start end |
#stop_listening ⇒ Object
Finaliza a escuta de mensagens.
76 77 78 79 80 |
# File 'lib/listener.rb', line 76 def stop_listening @listening_connection.close @connection.close end |