com.j_spaces.jms
Class GSQueueReceiverImpl

java.lang.Object
  extended by com.j_spaces.jms.GSMessageConsumerImpl
      extended by com.j_spaces.jms.GSQueueReceiverImpl
All Implemented Interfaces:
MessageConsumer, QueueReceiver

public class GSQueueReceiverImpl
extends GSMessageConsumerImpl
implements QueueReceiver

GigaSpaces implementation of the javax.jms.QueueReceiver interface. A client uses a QueueReceiver object to receive messages that have been delivered to a queue.

Although it is possible to have multiple QueueReceivers for the same queue, the JMS API does not define how messages are distributed between the QueueReceivers. The GigaSpaces API does not support multiple QueueReceivers for the same queue.

If a QueueReceiver specifies a message selector, the messages that are not selected remain on the queue. By definition, a message selector allows a QueueReceiver to skip messages. This means that when the skipped messages are eventually read, the total ordering of the reads does not retain the partial order defined by each message producer. Only QueueReceivers without a message selector will read messages in message producer order.

Creating a MessageConsumer provides the same features as creating a QueueReceiver. A MessageConsumer object is recommended for creating new code. The QueueReceiver is provided to support existing code.

See Also:
Session.createConsumer(Destination, String), Session.createConsumer(Destination), QueueSession.createReceiver(Queue, String), QueueSession.createReceiver(Queue), MessageConsumer

Field Summary
 
Fields inherited from class com.j_spaces.jms.GSMessageConsumerImpl
m_durableSubscriptionName
 
Constructor Summary
GSQueueReceiverImpl(GSSessionImpl sess, GSQueueImpl queue, String consumerKey, String selector, com.j_spaces.jdbc.ParserManager pManager)
           
 
Method Summary
 void close()
          Close the receiver.
 Queue getQueue()
          Gets the Queue associated with this queue receiver.
 
Methods inherited from class com.j_spaces.jms.GSMessageConsumerImpl
getConsumerID, getMessageListener, getMessageSelector, isClosed, receive, receive, receiveNoWait, setMessageListener, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.jms.MessageConsumer
getMessageListener, getMessageSelector, receive, receive, receiveNoWait, setMessageListener
 

Constructor Detail

GSQueueReceiverImpl

public GSQueueReceiverImpl(GSSessionImpl sess,
                           GSQueueImpl queue,
                           String consumerKey,
                           String selector,
                           com.j_spaces.jdbc.ParserManager pManager)
                    throws JMSException
Parameters:
sess -
queue -
consumerKey -
selector -
pManager - ParserManager used for the selector support
Throws:
JMSException
Method Detail

getQueue

public Queue getQueue()
               throws JMSException
Gets the Queue associated with this queue receiver.

Specified by:
getQueue in interface QueueReceiver
Returns:
this receiver's Queue
Throws:
JMSException - if the JMS provider fails to get the queue for this queue receiver due to some internal error.
See Also:
QueueReceiver.getQueue()

close

public void close()
           throws JMSException
Close the receiver. This call blocks until a receive or message listener in progress has completed. A blocked consumer receive call returns null when this consumer is closed.

Specified by:
close in interface MessageConsumer
Overrides:
close in class GSMessageConsumerImpl
Throws:
JMSException - if this consumer can't be closed
See Also:
MessageConsumer.close()