org.jboss.mq.server
Class BasicQueue

java.lang.Object
  extended byorg.jboss.mq.server.BasicQueue
Direct Known Subclasses:
ExclusiveQueue (src) , PersistentQueue (src)

public class BasicQueue
extends java.lang.Object

This class represents a queue which provides it's messages exclusively to one consumer at a time.

Notes about synchronization: Much of the work is synchronized on the receivers or messages depending on the work performed. However, anything to do with unacknowledged messages and removed subscriptions must be done synchronized on both (receivers first). This is because there are multiple entry points with the possibility that a message acknowledgement (or NACK) is being processed at the same time as a network failure removes the subscription.


Constructor Summary
BasicQueue(JMSDestinationManager (src)  server, java.lang.String description, BasicQueueParameters (src)  parameters)
          Construct a new basic queue
 
Method Summary
 void acknowledge(AcknowledgementRequest (src)  item, Tx (src)  txId)
          Acknowledge a message
 void addMessage(MessageReference (src)  mes, Tx (src)  txId)
          Add a message to the queue
 void addReceiver(Subscription (src)  sub)
          Add a receiver to the queue
 void addSubscriber(Subscription (src)  sub)
          Add a subscription from the queue
protected  void addToReceivers(Subscription (src)  sub)
          Add a receiver
 SpyMessage (src) [] browse(java.lang.String selector)
          Browse the queue
protected  void clearEvent(MessageReference (src)  message)
          Clear the event for a message
protected  void clearEvents()
          Clear all the events
 void createMessageCounter(java.lang.String name, java.lang.String subscription, boolean topic, boolean durable, int daycountmax)
          Create message counter object
protected  void dropMessage(MessageReference (src)  message)
          Remove a message
protected  void dropMessage(MessageReference (src)  message, Tx (src)  txid)
          Remove a message
 java.lang.String getDescription()
          Retrieve the unique description for this queue
 MessageCounter (src) getMessageCounter()
          Get message counter object
 int getQueueDepth()
          Retrieve the queue depth
 java.util.ArrayList getReceivers()
          Retrieve the receivers waiting for a message
 int getReceiversCount()
          Retrieve the number of receivers waiting for a message
 int getScheduledMessageCount()
          Returns the number of scheduled messages in the queue
 boolean isInUse()
          Test whether the queue is in use
 void nackMessages(Subscription (src)  sub)
          Nack all messages for a subscription
protected  void queueMessageForSending(Subscription (src)  sub, MessageReference (src)  message)
          Queue a message for sending through the client consumer
 SpyMessage (src) receive(Subscription (src)  sub, boolean wait)
          Receive a message from the queue
 void removeAllMessages()
           
protected  void removeReceiver(Subscription (src)  sub)
          Remove a receiver
 void removeSubscriber(Subscription (src)  sub)
          Removes a subscription from the queue
 void restoreMessage(MessageReference (src)  mes)
          Restores a message.
protected  void setupMessageAcknowledgement(Subscription (src)  sub, MessageReference (src)  messageRef)
          Setup a message acknowledgement
 void stop()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BasicQueue

public BasicQueue(JMSDestinationManager (src)  server,
                  java.lang.String description,
                  BasicQueueParameters (src)  parameters)
           throws JMSException (src) 
Construct a new basic queue

Parameters:
server - the destination manager
description - a description to uniquely identify the queue
parameters - the basic queue parameters
Method Detail

getDescription

public java.lang.String getDescription()
Retrieve the unique description for this queue

Returns:
the description

getReceiversCount

public int getReceiversCount()
Retrieve the number of receivers waiting for a message

Returns:
the number of receivers

getReceivers

public java.util.ArrayList getReceivers()
Retrieve the receivers waiting for a message

Returns:
an array of subscriptions

isInUse

public boolean isInUse()
Test whether the queue is in use

Returns:
true when there are subscribers

addReceiver

public void addReceiver(Subscription (src)  sub)
                 throws JMSException (src) 
Add a receiver to the queue

Parameters:
sub - the subscription to add
Throws:
JMSException (src)

addSubscriber

public void addSubscriber(Subscription (src)  sub)
                   throws JMSException (src) 
Add a subscription from the queue

Parameters:
sub - the subscription to add
Throws:
JMSException (src)

removeSubscriber

public void removeSubscriber(Subscription (src)  sub)
Removes a subscription from the queue

Parameters:
sub - the subscription to remove

getQueueDepth

public int getQueueDepth()
Retrieve the queue depth

Returns:
the number of messages in the queue

getScheduledMessageCount

public int getScheduledMessageCount()
Returns the number of scheduled messages in the queue


addMessage

public void addMessage(MessageReference (src)  mes,
                       Tx (src)  txId)
                throws JMSException (src) 
Add a message to the queue

Parameters:
mes - the message reference
txId - the transaction
Throws:
JMSException (src) - for any error

restoreMessage

public void restoreMessage(MessageReference (src)  mes)
Restores a message.


browse

public SpyMessage (src) [] browse(java.lang.String selector)
                    throws JMSException (src) 
Browse the queue

Parameters:
selector - the selector to apply, pass null for all messages
Throws:
JMSException (src) - for any error

receive

public SpyMessage (src)  receive(Subscription (src)  sub,
                          boolean wait)
                   throws JMSException (src) 
Receive a message from the queue

Parameters:
wait - whether to wait for a message
Throws:
JMSException (src) - for any error

acknowledge

public void acknowledge(AcknowledgementRequest (src)  item,
                        Tx (src)  txId)
                 throws JMSException (src) 
Acknowledge a message

Parameters:
item - the acknowledgement request
Throws:
JMSException (src) - for any error

nackMessages

public void nackMessages(Subscription (src)  sub)
Nack all messages for a subscription

Parameters:
sub - the subscription

removeAllMessages

public void removeAllMessages()
                       throws JMSException (src) 
Throws:
JMSException (src)

stop

public void stop()

createMessageCounter

public void createMessageCounter(java.lang.String name,
                                 java.lang.String subscription,
                                 boolean topic,
                                 boolean durable,
                                 int daycountmax)
Create message counter object

Parameters:
name - topic/queue name
subscription - topic subscription
topic - topic flag
durable - durable subscription flag
daycountmax - message history day count limit 0: disabled, >0: max day count, <0: unlimited

getMessageCounter

public MessageCounter (src)  getMessageCounter()
Get message counter object

Returns:
MessageCounter message counter object or null

toString

public java.lang.String toString()

clearEvents

protected void clearEvents()
Clear all the events


clearEvent

protected void clearEvent(MessageReference (src)  message)
Clear the event for a message

Parameters:
message - the message reference

addToReceivers

protected void addToReceivers(Subscription (src)  sub)
                       throws JMSException (src) 
Add a receiver

Parameters:
sub - the receiver to add
Throws:
JMSException (src)

removeReceiver

protected void removeReceiver(Subscription (src)  sub)
Remove a receiver

Parameters:
sub - the receiver to remove

queueMessageForSending

protected void queueMessageForSending(Subscription (src)  sub,
                                      MessageReference (src)  message)
Queue a message for sending through the client consumer

Parameters:
sub - the subscirption to receive the message
message - the message reference to queue

setupMessageAcknowledgement

protected void setupMessageAcknowledgement(Subscription (src)  sub,
                                           MessageReference (src)  messageRef)
                                    throws JMSException (src) 
Setup a message acknowledgement

Parameters:
sub - the subscription receiving the message
messageRef - the message to be acknowledged
Throws:
JMSException (src) - for any error

dropMessage

protected void dropMessage(MessageReference (src)  message)
Remove a message

Parameters:
message - the message to remove

dropMessage

protected void dropMessage(MessageReference (src)  message,
                           Tx (src)  txid)
Remove a message

Parameters:
message - the message to remove
txid - the transaction context for the removal