org.exolab.jms.messagemgr
Class TopicConsumerEndpoint

java.lang.Object
  |
  +--org.exolab.jms.messagemgr.AbstractConsumerEndpoint
        |
        +--org.exolab.jms.messagemgr.AbstractTopicConsumerEndpoint
              |
              +--org.exolab.jms.messagemgr.TopicConsumerEndpoint
All Implemented Interfaces:
ConsumerEndpoint, org.exolab.jms.messagemgr.DestinationCacheEventListener, DestinationEventListener

public class TopicConsumerEndpoint
extends org.exolab.jms.messagemgr.AbstractTopicConsumerEndpoint

A ConsumerEndpoint for transient topic consumers.

Version:
$Revision: 1.3 $ $Date: 2005/08/30 07:26:49 $
Author:
Jim Alateras, Tim Anderson

Field Summary
protected  java.util.Map _caches
          Maintains a map of TopicDestinationCache that this endpoint subscribes to, keyed on JmsTopic.
 
Constructor Summary
TopicConsumerEndpoint(long consumerId, long connectionId, JmsTopic topic, java.lang.String selector, boolean noLocal, DestinationManager destinations)
          Construct a new TopicConsumerEndpoint.
 
Method Summary
protected  void addMessage(MessageHandle handle)
          Add the handle to the cache.
 void cacheAdded(JmsDestination destination, DestinationCache cache)
          Invoked when a message cache is created.
 void cacheRemoved(JmsDestination destination, DestinationCache cache)
          Invoked when a message cache is removed.
 boolean canConsume(JmsDestination destination)
          Determines if this consumer can consume messages from the specified destination.
 void destinationAdded(JmsDestination destination)
          Invoked when a destination is created.
 void destinationRemoved(JmsDestination destination)
          Invoked when a destination is removed.
protected  void doClose()
          Closes this endpoint.
protected  MessageHandle doReceive(Condition cancel)
          Return the next available message to the client.
 long getConnectionId()
          Returns the identity of the connection that owns this consumer.
protected  DestinationCache[] getDestinationCaches()
          Returns the destination caches.
protected  DestinationManager getDestinationManager()
          Returns the destination manager.
 int getMessageCount()
          Return the number of unsent messages in the cache for this consumer.
protected  void init()
          Registers this with the associated DestinationCaches.
 boolean messageAdded(MessageHandle handle, MessageImpl message)
          This event is called when a non-persistent message is added to the DestinationCache.
 void messageRemoved(java.lang.String messageId)
          This event is called when a message is removed from the DestinationCache.
 boolean persistentMessageAdded(MessageHandle handle, MessageImpl message)
          This event is called when a persistent message is added to the DestinationCache.
 void persistentMessageRemoved(java.lang.String messageId)
          This event is called when a message is removed from the DestinationCache.
 void returnMessage(MessageHandle handle)
          Return a delivered, but unacknowledged message to the cache.
protected  void setConnectionId(long connectionId)
          Set the connection identifier.
 
Methods inherited from class org.exolab.jms.messagemgr.AbstractConsumerEndpoint
close, getDestination, getId, getNoLocal, getPersistentId, getSelector, isAsynchronous, isClosed, isPersistent, isWaitingForMessage, notifyMessageAvailable, receive, selects, setAsynchronous, setListener, setNoLocal, setSelector, setWaitingForMessage, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_caches

protected java.util.Map _caches
Maintains a map of TopicDestinationCache that this endpoint subscribes to, keyed on JmsTopic. A wildcard subscription may point to more than one.
Constructor Detail

TopicConsumerEndpoint

public TopicConsumerEndpoint(long consumerId,
                             long connectionId,
                             JmsTopic topic,
                             java.lang.String selector,
                             boolean noLocal,
                             DestinationManager destinations)
                      throws javax.jms.InvalidSelectorException,
                             javax.jms.JMSException
Construct a new TopicConsumerEndpoint.
Parameters:
consumerId - the identity of this consumer
connectionId - the identity of the connection that owns this consumer
topic - the topic to access
selector - the message selector. May be null
noLocal - if true, inhibits the delivery of messages published by its own connection.
destinations - the destination manager
Throws:
javax.jms.InvalidSelectorException - if the selector is invalid
javax.jms.JMSException - if the destination caches can't be constructed
Method Detail

getConnectionId

public long getConnectionId()
Returns the identity of the connection that owns this consumer.
Returns:
the identity of the connection, or -1 if this is not currently associated with a connection.
See Also:
ServerConnection.getConnectionId()

canConsume

public boolean canConsume(JmsDestination destination)
Determines if this consumer can consume messages from the specified destination.
Overrides:
canConsume in class AbstractConsumerEndpoint
Parameters:
destination - the destination
Returns:
true if the consumer can consume messages from destination; otherwise false

returnMessage

public void returnMessage(MessageHandle handle)
Return a delivered, but unacknowledged message to the cache.
Parameters:
handle - the handle of the message to return

getMessageCount

public int getMessageCount()
Return the number of unsent messages in the cache for this consumer.
Returns:
the number of unsent messages

messageAdded

public boolean messageAdded(MessageHandle handle,
                            MessageImpl message)
                     throws javax.jms.JMSException
This event is called when a non-persistent message is added to the DestinationCache.
Parameters:
handle - a handle to the message
message - the added message
Returns:
true if the listener accepted the message; otherwise false
Throws:
javax.jms.JMSException - if the listener fails to handle the message

messageRemoved

public void messageRemoved(java.lang.String messageId)
                    throws javax.jms.JMSException
This event is called when a message is removed from the DestinationCache.
Parameters:
messageId - the identifier of the removed message
Throws:
javax.jms.JMSException - if the listener fails to handle the message

persistentMessageAdded

public boolean persistentMessageAdded(MessageHandle handle,
                                      MessageImpl message)
                               throws javax.jms.JMSException,
                                      PersistenceException
This event is called when a persistent message is added to the DestinationCache.
Parameters:
handle - a handle to the added message
message - the added message
Returns:
true if the listener accepted the message;
Throws:
javax.jms.JMSException - if the listener fails to handle the message
PersistenceException - if there is a persistence related problem

persistentMessageRemoved

public void persistentMessageRemoved(java.lang.String messageId)
                              throws javax.jms.JMSException,
                                     PersistenceException
This event is called when a message is removed from the DestinationCache.
Parameters:
messageId - the identifier of the removed message
Throws:
javax.jms.JMSException - if the listener fails to handle the message
PersistenceException - if there is a persistence related problem

destinationAdded

public void destinationAdded(JmsDestination destination)
Invoked when a destination is created.
Specified by:
destinationAdded in interface DestinationEventListener
Parameters:
destination - the destination that was added

destinationRemoved

public void destinationRemoved(JmsDestination destination)
Invoked when a destination is removed.
Specified by:
destinationRemoved in interface DestinationEventListener
Parameters:
destination - the destination that was removed

cacheAdded

public void cacheAdded(JmsDestination destination,
                       DestinationCache cache)
Invoked when a message cache is created.
Specified by:
cacheAdded in interface DestinationEventListener
Parameters:
destination - the destination that messages are being cached for
cache - the corresponding cache

cacheRemoved

public void cacheRemoved(JmsDestination destination,
                         DestinationCache cache)
Invoked when a message cache is removed.
Specified by:
cacheRemoved in interface DestinationEventListener
Parameters:
destination - the destination that messages are no longer being cached for
cache - the corresponding cache

init

protected void init()
             throws javax.jms.JMSException
Registers this with the associated DestinationCaches. The consumer may receive messages immediately.
Throws:
javax.jms.JMSException - for any JMS error

setConnectionId

protected void setConnectionId(long connectionId)
Set the connection identifier.
Parameters:
connectionId - the identity of the connection that owns this consumer
See Also:
AbstractTopicConsumerEndpoint.getConnectionId()

addMessage

protected void addMessage(MessageHandle handle)
Add the handle to the cache.
Parameters:
handle - the message handle to add

doReceive

protected MessageHandle doReceive(Condition cancel)
                           throws javax.jms.JMSException
Return the next available message to the client.
Overrides:
doReceive in class AbstractConsumerEndpoint
Parameters:
cancel -  
Returns:
the next message, or null if none is available
Throws:
javax.jms.JMSException - for any error

doClose

protected void doClose()
Closes this endpoint.
Overrides:
doClose in class AbstractConsumerEndpoint

getDestinationManager

protected DestinationManager getDestinationManager()
Returns the destination manager.
Returns:
the destination manager

getDestinationCaches

protected DestinationCache[] getDestinationCaches()
Returns the destination caches.
Returns:
the destination caches


Copyright © 1999-2007 The OpenJMS Group. All Rights Reserved.