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