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.ConnectionInfo;
    24  import org.codehaus.activemq.message.ConsumerInfo;
    25  import org.codehaus.activemq.message.MessageAck;
    26  import org.codehaus.activemq.message.ProducerInfo;
    27  import org.codehaus.activemq.security.SecurityAdapter;
    28  import org.codehaus.activemq.service.MessageContainerManager;
    29  import org.codehaus.activemq.service.Service;
    30  import org.codehaus.activemq.service.RedeliveryPolicy;
    31  import org.codehaus.activemq.store.PersistenceAdapter;
    32
    33  import javax.jms.JMSException;
    34  import javax.naming.Context;
    35  import javax.transaction.xa.XAException;
    36  import java.io.File;
    37  import java.util.Hashtable;
    38  import java.util.Map;
    39
    40  /***
    41   * The Message Broker which routes messages,
    42   * maintains subscriptions and connections, acknowlegdges messages and handles
    43   * transactions.
    44   *
    45   * @version $Revision: 1.15 $
    46   */
    47  public interface Broker extends Service, CapacityMonitor {
    48
    49      /***
    50       * Notification of a new client attempting to connect, which can
    51       * be rejected if authentication or authorization fails.
    52       */
    53      public void addClient(BrokerClient client, ConnectionInfo info) throws JMSException;
    54
    55      /***
    56       * A hint to the broker that an BrokerClient has stopped
    57       * This enables the broker to clean-up any outstanding processing
    58       * that may be outstanding
    59       */
    60      public void removeClient(BrokerClient client, ConnectionInfo info) throws JMSException;
    61
    62      /***
    63       * Adds a new message producer, which could be rejected due to authorization
    64       */
    65      public void addMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
    66
    67      /***
    68       * Removes a producer
    69       */
    70      public void removeMessageProducer(BrokerClient client, ProducerInfo info) throws JMSException;
    71
    72
    73      /***
    74       * Add an active message consumer, which could be rejected due to authorization
    75       */
    76      public void addMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
    77
    78      /***
    79       * remove an active message consumer
    80       */
    81      public void removeMessageConsumer(BrokerClient client, ConsumerInfo info) throws JMSException;
    82
    83
    84      /***
    85       * send a message to the broker
    86       */
    87      public void sendMessage(BrokerClient client, ActiveMQMessage message) throws JMSException;
    88
    89      /***
    90       * send a message to the broker within a transaction
    91       */
    92      public void sendTransactedMessage(BrokerClient client, String transactionId, ActiveMQMessage message) throws JMSException;
    93
    94      /***
    95       * Acknowledge positively or negatively, the consumption of a message by the Message Consumer
    96       */
    97      public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException;
    98
    99      /***
    100      * Acknowledge positively or negatively, the consumption of a message within a transaction
    101      */
    102     public void acknowledgeTransactedMessage(BrokerClient client, String transactionId, MessageAck ack) throws JMSException;
    103
    104     /***
    105      * gets a list of all the prepared xa transactions.
    106      *
    107      * @param client
    108      */
    109     public ActiveMQXid[] getPreparedTransactions(BrokerClient client) throws XAException;
    110
    111
    112     /***
    113      * Called after a rollback of a JMS transaction to redeliver the message to the consumers
    114      * dispatch queue
    115      *
    116      * @param client
    117      * @param ack
    118      */
    119     public void redeliverMessage(BrokerClient client, MessageAck ack) throws JMSException;
    120
    121     /***
    122      * Delete a durable subscriber
    123      *
    124      * @param clientId
    125      * @param subscriberName
    126      * @throws JMSException if the subscriber doesn't exist or is still active
    127      */
    128     public void deleteSubscription(String clientId, String subscriberName) throws JMSException;
    129
    130     /***
    131      * start a transaction
    132      *
    133      * @param client
    134      * @param transactionId
    135      */
    136     public void startTransaction(BrokerClient client, String transactionId) throws JMSException;
    137
    138     /***
    139      * commit a transaction
    140      *
    141      * @param client
    142      * @param transactionId
    143      * @throws JMSException
    144      */
    145     public void commitTransaction(BrokerClient client, String transactionId) throws JMSException;
    146
    147     /***
    148      * rollback a transaction
    149      *
    150      * @param client
    151      * @param transactionId
    152      * @throws JMSException
    153      */
    154     public void rollbackTransaction(BrokerClient client, String transactionId) throws JMSException;
    155
    156
    157     /***
    158      * @param client
    159      * @param xid
    160      * @throws XAException
    161      */
    162     public void startTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
    163
    164     /***
    165      * @param client
    166      * @param xid
    167      * @return
    168      * @throws XAException
    169      */
    170     public int prepareTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
    171
    172     /***
    173      * @param client
    174      * @param xid
    175      * @throws XAException
    176      */
    177
    178     public void rollbackTransaction(BrokerClient client, ActiveMQXid xid) throws XAException;
    179
    180     /***
    181      * @param client
    182      * @param xid
    183      * @param onePhase
    184      * @throws XAException
    185      */
    186     public void commitTransaction(BrokerClient client, ActiveMQXid xid, boolean onePhase) throws XAException;
    187
    188
    189     // Properties
    190     //-------------------------------------------------------------------------
    191
    192     /***
    193      * Get a temp directory - used for spooling
    194      *
    195      * @return a File ptr to the directory
    196      */
    197     public File getTempDir();
    198
    199     /***
    200      * @return the name of the Broker
    201      */
    202     public String getBrokerName();
    203
    204     /***
    205      * @return the name of the cluster the broker belongs to
    206      */
    207     public String getBrokerClusterName();
    208
    209     /***
    210      * @return the PersistenceAdaptor
    211      */
    212     public PersistenceAdapter getPersistenceAdapter();
    213
    214     /***
    215      * set the persistence adaptor
    216      *
    217      * @param persistenceAdapter
    218      */
    219     public void setPersistenceAdapter(PersistenceAdapter persistenceAdapter);
    220
    221     /***
    222      * @return a map, indexed by name of the container managers
    223      */
    224     public Map getContainerManagerMap();
    225
    226     /***
    227      * Returns the naming context of the destinations available in this broker
    228      *
    229      * @param environment
    230      * @return the context
    231      */
    232     public Context getDestinationContext(Hashtable environment);
    233
    234     /***
    235      * Add a ConsumerInfoListener to the Broker
    236      *
    237      * @param l
    238      */
    239     public void addConsumerInfoListener(ConsumerInfoListener l);
    240
    241     /***
    242      * Remove a ConsumerInfoListener from the Broker
    243      *
    244      * @param l
    245      */
    246     public void removeConsumerInfoListener(ConsumerInfoListener l);
    247
    248
    249     /***
    250      * @return the MessageContainerManager for durable topics
    251      */
    252     public MessageContainerManager getPersistentTopicContainerManager();
    253
    254     /***
    255      * @return the MessageContainerManager for transient topics
    256      */
    257     public MessageContainerManager getTransientTopicContainerManager();
    258
    259     /***
    260      * @return the MessageContainerManager for persistent queues
    261      */
    262     public MessageContainerManager getPersistentQueueContainerManager();
    263
    264     /***
    265      * @return the MessageContainerManager for transient queues
    266      */
    267     public MessageContainerManager getTransientQueueContainerManager();
    268
    269     /***
    270      * Returns the security adapter used to authenticate and authorize access to JMS resources
    271      */
    272     public SecurityAdapter getSecurityAdapter();
    273
    274     /***
    275      * Sets the security adapter used to authenticate and authorize access to JMS resources
    276      */
    277     public void setSecurityAdapter(SecurityAdapter securityAdapter);
    278
    279     RedeliveryPolicy getRedeliveryPolicy();
    280
    281     void setRedeliveryPolicy(RedeliveryPolicy redeliveryPolicy);
    282 }