org.codehaus.activemq.service.impl
Class DurableTopicMessageContainerManager

java.lang.Object
  extended byorg.codehaus.activemq.service.impl.MessageContainerManagerSupport
      extended byorg.codehaus.activemq.service.impl.DurableTopicMessageContainerManager
All Implemented Interfaces:
MessageContainerManager, Service
Direct Known Subclasses:
TransientTopicMessageContainerManager

public class DurableTopicMessageContainerManager
extends MessageContainerManagerSupport

A default Broker used for Topic messages for durable consumers

Version:
$Revision: 1.25 $

Field Summary
protected  Map activeSubscriptions
           
protected  FilterFactory filterFactory
           
protected  SubscriptionContainer subscriptionContainer
           
 
Fields inherited from class org.codehaus.activemq.service.impl.MessageContainerManagerSupport
dispatcher, messageContainers
 
Constructor Summary
DurableTopicMessageContainerManager(PersistenceAdapter persistenceAdapter, RedeliveryPolicy redeliveryPolicy)
           
DurableTopicMessageContainerManager(PersistenceAdapter persistenceAdapter, SubscriptionContainer subscriptionContainer, FilterFactory filterFactory, Dispatcher dispatcher)
           
 
Method Summary
 void acknowledgeMessage(BrokerClient client, MessageAck ack)
          Acknowledge a message as being read and consumed byh the Consumer
 void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack)
          This is a hook to notify the dispatcher for the clients subscription that we have acknowledged a message within a transaction but before the commit - so the message is not really being acknowledged here but this method is intended to be a hook to let the dispatcher know that we can now send another message to the client.
 void addMessageConsumer(BrokerClient client, ConsumerInfo info)
           
 void commitTransaction(BrokerClient client, String transactionId)
          A hook when the transaction is about to be commited; so apply all outstanding commands to the Journal if using a Journal (transaction log)
protected  MessageContainer createContainer(String destinationName)
          Factory method to create a new MessageContainer
protected  Destination createDestination(String destinationName)
          Factory method to create a new Destination
protected  Filter createFilter(ConsumerInfo info)
          Create filter for a Consumer
 void deleteSubscription(String clientId, String subscriberName)
          Delete a durable subscriber
protected  void doAddMessageConsumer(BrokerClient client, ConsumerInfo info)
           
protected  void loadAllMessageContainers()
          Called when recovering a wildcard subscription where we need to load all the durable message containers (for which we have any outstanding messages to deliver) into RAM
 void poll()
          poll or messages
protected  void recoverSubscriptions(Subscription subscription)
          This method is called when a new durable subscription is started and so we need to go through each matching message container and dispatch any matching messages that may be outstanding
 void redeliverMessage(BrokerClient client, MessageAck ack)
          Called after a rollback of a JMS transaction to redeliver the message to the consumers dispatch queue
 void removeMessageConsumer(BrokerClient client, ConsumerInfo info)
           
 void rollbackTransaction(BrokerClient client, String transactionId)
          A hook when the transaction is about to be rolled back; so discard all outstanding commands that are pending to be written to the Journal
 void sendMessage(BrokerClient client, ActiveMQMessage message)
           
 
Methods inherited from class org.codehaus.activemq.service.impl.MessageContainerManagerSupport
getContainer, getDestinations, isMaintainDestinationStats, loadContainer, setMaintainDestinationStats, start, stop, updateAcknowledgeStats, updateSendStats
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

subscriptionContainer

protected SubscriptionContainer subscriptionContainer

filterFactory

protected FilterFactory filterFactory

activeSubscriptions

protected Map activeSubscriptions
Constructor Detail

DurableTopicMessageContainerManager

public DurableTopicMessageContainerManager(PersistenceAdapter persistenceAdapter,
                                           RedeliveryPolicy redeliveryPolicy)

DurableTopicMessageContainerManager

public DurableTopicMessageContainerManager(PersistenceAdapter persistenceAdapter,
                                           SubscriptionContainer subscriptionContainer,
                                           FilterFactory filterFactory,
                                           Dispatcher dispatcher)
Method Detail

addMessageConsumer

public void addMessageConsumer(BrokerClient client,
                               ConsumerInfo info)
                        throws JMSException
Parameters:
client -
info -
Throws:
JMSException

removeMessageConsumer

public void removeMessageConsumer(BrokerClient client,
                                  ConsumerInfo info)
                           throws JMSException
Parameters:
client -
info -
Throws:
JMSException

deleteSubscription

public void deleteSubscription(String clientId,
                               String subscriberName)
                        throws JMSException
Delete a durable subscriber

Parameters:
clientId -
subscriberName -
Throws:
JMSException - if the subscriber doesn't exist or is still active

sendMessage

public void sendMessage(BrokerClient client,
                        ActiveMQMessage message)
                 throws JMSException
Parameters:
client -
message -
Throws:
JMSException

acknowledgeMessage

public void acknowledgeMessage(BrokerClient client,
                               MessageAck ack)
                        throws JMSException
Acknowledge a message as being read and consumed byh the Consumer

Parameters:
client -
ack -
Throws:
JMSException

acknowledgeTransactedMessage

public void acknowledgeTransactedMessage(BrokerClient client,
                                         String transactionId,
                                         MessageAck ack)
                                  throws JMSException
Description copied from interface: MessageContainerManager
This is a hook to notify the dispatcher for the clients subscription that we have acknowledged a message within a transaction but before the commit - so the message is not really being acknowledged here but this method is intended to be a hook to let the dispatcher know that we can now send another message to the client.

Without this hook, if we have a prefetch value of 1, we can never consume 2 messages in a transaction, since the ack for the first message never arrives until the commit()

Throws:
JMSException

redeliverMessage

public void redeliverMessage(BrokerClient client,
                             MessageAck ack)
                      throws JMSException
Description copied from interface: MessageContainerManager
Called after a rollback of a JMS transaction to redeliver the message to the consumers dispatch queue

Parameters:
client -
ack -
Throws:
JMSException

poll

public void poll()
          throws JMSException
poll or messages

Throws:
JMSException

commitTransaction

public void commitTransaction(BrokerClient client,
                              String transactionId)
Description copied from interface: MessageContainerManager
A hook when the transaction is about to be commited; so apply all outstanding commands to the Journal if using a Journal (transaction log)

Parameters:
client -
transactionId -

rollbackTransaction

public void rollbackTransaction(BrokerClient client,
                                String transactionId)
Description copied from interface: MessageContainerManager
A hook when the transaction is about to be rolled back; so discard all outstanding commands that are pending to be written to the Journal

Parameters:
client -
transactionId -

createContainer

protected MessageContainer createContainer(String destinationName)
                                    throws JMSException
Description copied from class: MessageContainerManagerSupport
Factory method to create a new MessageContainer

Specified by:
createContainer in class MessageContainerManagerSupport
Throws:
JMSException

createDestination

protected Destination createDestination(String destinationName)
Description copied from class: MessageContainerManagerSupport
Factory method to create a new Destination

Specified by:
createDestination in class MessageContainerManagerSupport

doAddMessageConsumer

protected void doAddMessageConsumer(BrokerClient client,
                                    ConsumerInfo info)
                             throws JMSException
Throws:
JMSException

recoverSubscriptions

protected void recoverSubscriptions(Subscription subscription)
                             throws JMSException
This method is called when a new durable subscription is started and so we need to go through each matching message container and dispatch any matching messages that may be outstanding

Parameters:
subscription -
Throws:
JMSException

loadAllMessageContainers

protected void loadAllMessageContainers()
                                 throws JMSException
Called when recovering a wildcard subscription where we need to load all the durable message containers (for which we have any outstanding messages to deliver) into RAM

Throws:
JMSException

createFilter

protected Filter createFilter(ConsumerInfo info)
                       throws JMSException
Create filter for a Consumer

Parameters:
info -
Returns:
the Fitler
Throws:
JMSException


Copyright © 2004 Protique, Ltd.. All Rights Reserved.