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 }