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

- old
+ new

@@ -1,11 +1,11 @@ # Classes java usadas nesse arquivo import 'javax.jms.Session' import 'javax.jms.MessageListener' module Sparrow - module JMSg + module JMS module Messaging # # Tempo padrao de timeout no recebimento de mensagens = 1 milesegundo. # @@ -131,41 +131,52 @@ end # # Ouvintes de mensagens. # - # TODO: Completar a implementacao. Ainda nao esta legal. + # TODO: Completar a implementacao. Ainda nao esta legal. (Ja dei um tapinha, + # acho que agora ta bem proximo do que deve ser.) # class Listener < Base include MessageListener - + + # + # Estes parametros serao injetados pelo listener manager de acordo com o + # que houver sido definido pelos metodos connection_factory_name e destination_name. + # def initialize(connection_factory, destination) super(connection_factory, destination) end + + # + # 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. + # + def connection_factory_name(name) - def criteria_for_receiving(criteria = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}) - # Valor default para timeout, caso nao tenha sido informado - @criteria_for_receiving[:timeout] = criteria[:timeout] || DEFAULT_RECEIVER_TIMEOUT - end - # - # Nome pelo qual este listener sera conhecido. + # Nome JNDI do destino JMS que sera escutado. # - # Invariavelmente deve ser re-implementado nas subclasses. + # Invariavelmente deve ser usado pelas subclasses, para informar o nome + # da queue ou topico que sera escutado. # - def name - raise Utils::Exception::AbstractMethodError.new('name') + def destination_name(name) + @destination_name = name end - # - # Destino JMS que sera escutado. - # - # Invariavelmente deve ser re-implementado nas subclasses. - # - def destination_name - raise Utils::Exception::AbstractMethodError.new('destination_name') + # + # 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. + # + def criteria_for_receiving(criteria = {:timeout => DEFAULT_RECEIVER_TIMEOUT, :selector => ''}) + # Valor default para timeout, caso nao tenha sido informado + @criteria_for_receiving[:timeout] = criteria[:timeout] || DEFAULT_RECEIVER_TIMEOUT end - + # # Inicia a escuta de mensagens. # def start_listening # Cria uma conexao, uma sessao e um consumidor de qualquer tipo de mensagem