lib/messaging.rb in leandrosilva-sparrow-1.0.0 vs lib/messaging.rb in leandrosilva-sparrow-1.0.1

- old
+ new

@@ -1,25 +1,25 @@ # Classes java usadas nesse arquivo import 'javax.jms.Session' import 'javax.jms.MessageListener' module Sparrow - module JMS + module JMSg module Messaging # - # Tempo padrão de timeout no recebimento de mensagens = 1 milesegundo. + # Tempo padrao de timeout no recebimento de mensagens = 1 milesegundo. # DEFAULT_RECEIVER_TIMEOUT = 1000 # # Classe base para mensageiros, que enviam ou recebem mensagens, tanto - # para filas ou tópicos. + # para filas ou topicos. # class Base def initialize(connection_factory, destination) - # Fábrica de conexões JMS + # Fabrica de conexoes JMS @connection_factory = connection_factory # Destino JMS para envio ou recebimento de mensagens @destination = destination end @@ -31,11 +31,10 @@ class Sender < Base def send_text_message(text) send_message do |session| text_message = session.create_text_message(text) - # Se houver uma bloco para tratamento da mensagem if block_given? yield(text_message) end text_message @@ -44,11 +43,10 @@ def send_object_message(object) send_message do |session| object_message = session.create_object_message(object) - # Se houver uma bloco para tratamento da mensagem if block_given? yield(object_message) end object_message @@ -57,112 +55,111 @@ def send_map_message send_message do |session| map_message = session.create_map_message - # Se houver uma bloco para tratamento da mensagem if block_given? yield(map_message) end map_message end end def send_messages(&message_sender) - # Cria uma conexão, uma sessão e um emissor de qualquer tipo de mensagem + # Cria uma conexao, uma sessao e um emissor de qualquer tipo de mensagem connection = @connection_factory.create_connection session = connection.create_session(true, Session::AUTO_ACKNOWLEDGE) producer = session.create_producer(@destination) - # Passa o controle que trata a emissão de mensagens + # Passa o controle que trata a emissao de mensagens message_sender.call(session, producer) - # Fecha a conexão + # Fecha a conexao connection.close end # --- Private methods --- # private def send_message(&message_creator) - # Cria uma conexão, uma sessão e um emissor de qualquer tipo de mensagem + # Cria uma conexao, uma sessao e um emissor de qualquer tipo de mensagem connection = @connection_factory.create_connection session = connection.create_session(true, Session::AUTO_ACKNOWLEDGE) producer = session.create_producer(@destination) # Obtem uma mensagem (TextMessage, ObjectMessage ou MapMessage) do criador especifico message = message_creator.call(session) # Envia a mensagem producer.send(message) - # Commita a sessão e fecha a conexão + # Commita a sessao e fecha a conexao session.commit connection.close end end # # Receptor de mensagens. # class Receiver < Base def receive_message(criteria_for_receiving = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}, &message_handler) - # Cria uma conexão, uma sessão e um consumidor de qualquer tipo de mensagem + # 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 conexão para receber mensagens + # 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 identificação de mensagem, util para o message_handler + # 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 conexão + # Fecha a conexao connection.close end end # # Ouvintes de mensagens. # - # TODO: Completar a implementação. Ainda não está legal. + # TODO: Completar a implementacao. Ainda nao esta legal. # class Listener < Base include MessageListener def initialize(connection_factory, destination) super(connection_factory, destination) end def criteria_for_receiving(criteria = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}) - # Valor default para timeout, caso não tenha sido informado + # Valor default para timeout, caso nao tenha sido informado @criteria_for_receiving[:timeout] = criteria[:timeout] || DEFAULT_RECEIVER_TIMEOUT end # - # Nome pelo qual este listener será conhecido. + # Nome pelo qual este listener sera conhecido. # # Invariavelmente deve ser re-implementado nas subclasses. # def name raise Utils::Exception::AbstractMethodError.new('name') end # - # Destino JMS que será escutado. + # Destino JMS que sera escutado. # # Invariavelmente deve ser re-implementado nas subclasses. # def destination_name raise Utils::Exception::AbstractMethodError.new('destination_name') @@ -170,39 +167,39 @@ # # Inicia a escuta de mensagens. # def start_listening - # Cria uma conexão, uma sessão e um consumidor de qualquer tipo de mensagem + # 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.message_listener = self - # inicia a escuta de mensagens + # Inicia a escuta de mensagens connection.start end # - # Faz o enriquecimento do objeto mensagem e delega para o método on_receive_message + # Faz o enriquecimento do objeto mensagem e delega para o metodo on_receive_message # que, implementado pelas subclasses, efetivamente trata a mensagem. # - # Não deve ser re-implementado por subclasses. + # Nao deve ser re-implementado por subclasses. # def on_message(received_message) class << received_message include MessageType end on_receive_message(received_message) end # - # É executado todas as vezes que chega uma mensagem que atenda aos critérios - # definido para este listener (na variável de instância @criteria). + # E executado todas as vezes que chega uma mensagem que atenda aos criterios + # definido para este listener (na variavel de instancia @criteria). # # Invariavelmente deve ser re-implementado nas subclasses. # def on_receive_message(received_message) raise Utils::Exception::AbstractMethodError.new('on_receive_message') @@ -225,6 +222,6 @@ def is_map_message? respond_to? :get_long end end end -end \ No newline at end of file +end