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  package org.codehaus.activemq.broker;
19  
20  import org.codehaus.activemq.capacity.CapacityMonitor;
21  import org.codehaus.activemq.message.ActiveMQMessage;
22  import org.codehaus.activemq.message.ActiveMQXid;
23  import org.codehaus.activemq.message.ConsumerInfo;
24  import org.codehaus.activemq.message.MessageAck;
25  import org.codehaus.activemq.service.Service;
26  import org.codehaus.activemq.store.PersistenceAdapter;
27  
28  import javax.jms.JMSException;
29  import javax.transaction.xa.XAException;
30  import java.io.File;
31  
32  /***
33   * The Message Broker which routes messages,
34   * maintains subscriptions and connections, acknowlegdges messages and handles
35   * transactions.
36   *
37   * @version $Revision: 1.7 $
38   */
39  public interface Broker extends Service, CapacityMonitor {
40  
41      /***
42       * Add an active message consumer
43       *
44       * @param client
45       * @param info
46       * @throws JMSException
47       */
48      public void addMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
49  
50      /***
51       * remove an active message consumer
52       *
53       * @param client
54       * @param info
55       * @throws JMSException
56       */
57      public void removeMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
58  
59      /***
60       * gets a list of all the prepared xa transactions.
61       *
62       * @param client
63       */
64      public ActiveMQXid[] getPreparedTransactions(BrokerClient client) throws XAException;
65  
66      /***
67       * Acknowledge consumption of a message by the Message Consumer
68       *
69       * @param client
70       * @param ack
71       * @throws JMSException
72       */
73      public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException;
74  
75      /***
76       * Acknowledge consumption of a message within a transaction
77       *
78       * @param client
79       * @param transactionId
80       * @param ack
81       * @throws JMSException
82       */
83      public void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack) throws JMSException;
84  
85  
86      /***
87       * Called after a rollback of a JMS transaction to redeliver the message to the consumers
88       * dispatch queue
89       *
90       * @param client
91       * @param ack
92       */
93      public void redeliverMessage(BrokerClient client, MessageAck ack) throws JMSException;
94  
95      /***
96       * send a message to the broker
97       *
98       * @param client
99       * @param message
100      * @throws JMSException
101      */
102     public void sendMessage(BrokerClient client, ActiveMQMessage message) throws JMSException;
103 
104     /***
105      * send a message to the broker within a transaction
106      *
107      * @param client
108      * @param transactionId
109      * @param message
110      * @throws JMSException
111      */
112     public void sendTransactedMessage(BrokerClient client, String transactionId, ActiveMQMessage message) throws JMSException;
113 
114     /***
115      * A hint to the broker that an BrokerClient has stopped
116      * This enables the broker to clean-up any outstanding processing
117      * that may be outstanding
118      *
119      * @param client
120      * @throws JMSException
121      */
122     public void cleanUpClient(BrokerClient client) throws JMSException;
123 
124     /***
125      * Delete a durable subscriber
126      *
127      * @param clientId
128      * @param subscriberName
129      * @throws JMSException if the subscriber doesn't exist or is still active
130      */
131     public void deleteSubscription(String clientId, String subscriberName) throws JMSException;
132 
133     /***
134      * start a transaction
135      *
136      * @param client
137      * @param transactionId
138      */
139     public void startTransaction(BrokerClient client, String transactionId) throws JMSException;
140 
141     /***
142      * commit a transaction
143      *
144      * @param client
145      * @param transactionId
146      * @throws JMSException
147      */
148     public void commitTransaction(BrokerClient client, String transactionId) throws JMSException;
149 
150     /***
151      * rollback a transaction
152      *
153      * @param client
154      * @param transactionId
155      * @throws JMSException
156      */
157     public void rollbackTransaction(BrokerClient client, String transactionId) throws JMSException;
158 
159 
160     /***
161      * @param client
162      * @param xid
163      */
164     public void startTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
165 
166     /***
167      * @param client
168      * @param xid
169      */
170     public int prepareTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
171 
172     /***
173      * @param client
174      * @param xid
175      */
176     public void rollbackTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
177 
178     /***
179      * @param client
180      * @param xid
181      * @param onePhase
182      */
183     public void commitTransaction(BrokerClient client, ActiveMQXid xid, boolean onePhase) throws XAException;
184 
185     /***
186      * Get a temp directory - used for spooling
187      *
188      * @return a File ptr to the directory
189      */
190     public File getTempDir();
191 
192     public String getBrokerName();
193 
194     PersistenceAdapter getPersistenceAdapter();
195 
196     void setPersistenceAdapter(PersistenceAdapter persistenceAdapter);
197 }