View Javadoc

1   /*
2    * Created on Apr 22, 2004
3    *
4    * To change the template for this generated file go to
5    * Window - Preferences - Java - Code Generation - Code and Comments
6    */
7   package org.codehaus.activemq.service;
8   
9   import org.codehaus.activemq.broker.BrokerClient;
10  import org.codehaus.activemq.message.ActiveMQMessage;
11  import org.codehaus.activemq.message.ConsumerInfo;
12  import org.codehaus.activemq.message.MessageAck;
13  
14  import javax.jms.JMSException;
15  
16  /***
17   * A manager of MessageContainer instances
18   */
19  public interface MessageContainerManager extends Service {
20      /***
21       * @param client
22       * @param info
23       * @throws JMSException
24       */
25      public abstract void addMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
26  
27      /***
28       * @param client
29       * @param info
30       * @throws JMSException
31       */
32      public abstract void removeMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
33  
34      /***
35       * Delete a durable subscriber
36       *
37       * @param clientId
38       * @param subscriberName
39       * @throws JMSException if the subscriber doesn't exist or is still active
40       */
41      public abstract void deleteSubscription(String clientId, String subscriberName) throws JMSException;
42  
43      /***
44       * @param client
45       * @param message
46       * @throws JMSException
47       */
48      public abstract void sendMessage(BrokerClient client, ActiveMQMessage message) throws JMSException;
49  
50      /***
51       * Acknowledge a message as being read and consumed by the Consumer
52       *
53       * @param client
54       * @param ack
55       * @throws JMSException
56       */
57      public abstract void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException;
58  
59  
60      /***
61       * Called after a rollback of a JMS transaction to redeliver the message to the consumers
62       * dispatch queue
63       *
64       * @param client
65       * @param ack
66       */
67      public void redeliverMessage(BrokerClient client, MessageAck ack) throws JMSException;
68  
69      /***
70       * Poll for messages
71       *
72       * @throws JMSException
73       */
74      public abstract void poll() throws JMSException;
75  
76  
77      /***
78       * A hook when the transaction is about to be commited; so apply all outstanding commands to the
79       * Journal if using a Journal (transaction log)
80       *
81       * @param client
82       * @param transactionId
83       */
84      public void commitTransaction(BrokerClient client, String transactionId) throws JMSException;
85  
86      /***
87       * A hook when the transaction is about to be rolled back; so discard all outstanding commands
88       * that are pending to be written to the Journal
89       *
90       * @param client
91       * @param transactionId
92       */
93      public void rollbackTransaction(BrokerClient client, String transactionId);
94  
95      /***
96       * Allows the lookup of a specific named message container
97       *
98       * @param physicalName
99       * @return
100      */
101     public MessageContainer getContainer(String physicalName) throws JMSException;
102 
103     /***
104      * This is a hook to notify the dispatcher for the clients subscription that
105      * we have acknowledged a message within a transaction but before the commit - so
106      * the message is not really being acknowledged here but this method is intended to be a hook
107      * to let the dispatcher know that we can now send another message to the client.
108      * <p/>
109      * Without this hook, if we have a prefetch value of 1, we can never consume 2 messages
110      * in a transaction, since the ack for the first message never arrives until the commit()
111      */
112     public void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack) throws JMSException;
113 }