View Javadoc

1   /*** 
2    * 
3    * Copyright 2004 Protique Ltd
4    * 
5    * Licensed under the Apache License, Version 2.0 (the "License"); 
6    * you may not use this file except in compliance with the License. 
7    * You may obtain a copy of the License at 
8    * 
9    * http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, 
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
14   * See the License for the specific language governing permissions and 
15   * limitations under the License. 
16   * 
17   **/
18  
19  package org.codehaus.activemq;
20  
21  import org.codehaus.activemq.message.ActiveMQDestination;
22  
23  import javax.jms.JMSException;
24  import javax.jms.Queue;
25  import javax.jms.QueueReceiver;
26  
27  /***
28   * A client uses a <CODE>QueueReceiver</CODE> object to receive messages that
29   * have been delivered to a queue.
30   * <p/>
31   * <P>
32   * Although it is possible to have multiple <CODE>QueueReceiver</CODE> s for
33   * the same queue, the JMS API does not define how messages are distributed
34   * between the <CODE>QueueReceiver</CODE>s.
35   * <p/>
36   * <P>
37   * If a <CODE>QueueReceiver</CODE> specifies a message selector, the messages
38   * that are not selected remain on the queue. By definition, a message selector
39   * allows a <CODE>QueueReceiver</CODE> to skip messages. This means that when
40   * the skipped messages are eventually read, the total ordering of the reads
41   * does not retain the partial order defined by each message producer. Only
42   * <CODE>QueueReceiver</CODE> s without a message selector will read messages
43   * in message producer order.
44   * <p/>
45   * <P>
46   * Creating a <CODE>MessageConsumer</CODE> provides the same features as
47   * creating a <CODE>QueueReceiver</CODE>. A <CODE>MessageConsumer</CODE>
48   * object is recommended for creating new code. The <CODE>QueueReceiver
49   * </CODE> is provided to support existing code.
50   *
51   * @see javax.jms.Session#createConsumer(javax.jms.Destination, String)
52   * @see javax.jms.Session#createConsumer(javax.jms.Destination)
53   * @see javax.jms.QueueSession#createReceiver(Queue, String)
54   * @see javax.jms.QueueSession#createReceiver(Queue)
55   * @see javax.jms.MessageConsumer
56   */
57  
58  public class ActiveMQQueueReceiver extends ActiveMQMessageConsumer implements
59          QueueReceiver {
60  
61      /***
62       * @param theSession
63       * @param dest
64       * @param selector
65       * @param cnum
66       * @param prefetch
67       * @throws JMSException
68       */
69      protected ActiveMQQueueReceiver(ActiveMQSession theSession,
70                                      ActiveMQDestination dest, String selector, int cnum, int prefetch)
71              throws JMSException {
72          super(theSession, dest, "", selector, cnum, prefetch, false, false);
73      }
74  
75      /***
76       * Gets the <CODE>Queue</CODE> associated with this queue receiver.
77       *
78       * @return this receiver's <CODE>Queue</CODE>
79       * @throws JMSException if the JMS provider fails to get the queue for this queue
80       *                      receiver due to some internal error.
81       */
82  
83      public Queue getQueue() throws JMSException {
84          checkClosed();
85          return (Queue) super.getDestination();
86      }
87  }