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.store;
    19
    20  import org.codehaus.activemq.service.QueueMessageContainer;
    21  import org.codehaus.activemq.service.Service;
    22  import org.codehaus.activemq.service.TopicMessageContainer;
    23
    24  import javax.jms.JMSException;
    25
    26  /***
    27   * Adapter to the actual persistence mechanism used with ActiveMQ
    28   *
    29   * @version $Revision: 1.2 $
    30   */
    31  public interface PersistenceAdapter extends Service {
    32
    33      /***
    34       * Factory method to create a new queue message store with the given destination name
    35       */
    36      public MessageStore createQueueMessageStore(String destinationName) throws JMSException;
    37
    38      /***
    39       * Factory method to create a new topic message store with the given destination name
    40       */
    41      public TopicMessageStore createTopicMessageStore(String destinationName) throws JMSException;
    42
    43      /***
    44       * Factory method to create a new persistent prepared transaction store for XA recovery
    45       */
    46      public PreparedTransactionStore createPreparedTransactionStore() throws JMSException;
    47
    48      /***
    49       * Factory method to create a new durable queue based message contaienr
    50       */
    51      public QueueMessageContainer createQueueMessageContainer(String destinationName) throws JMSException;
    52
    53      /***
    54       * Factory method to create a new durable topic based message container
    55       */
    56      public TopicMessageContainer createTopicMessageContainer(String destinationName) throws JMSException;
    57
    58      /***
    59       * This method starts a transaction on the persistent storage - which is nothing to
    60       * do with JMS or XA transactions - its purely a mechanism to perform multiple writes
    61       * to a persistent store in 1 transaction as a performance optimisation.
    62       * <p/>
    63       * Typically one transaction will require one disk synchronization point and so for
    64       * real high performance its usually faster to perform many writes within the same
    65       * transaction to minimise latency caused by disk synchronization. This is especially
    66       * true when using tools like Berkeley Db or embedded JDBC servers.
    67       */
    68      public void beginTransaction() throws JMSException;
    69
    70
    71      /***
    72       * Commit a persistence transaction
    73       *
    74       * @see PersistenceAdapter#beginTransaction()
    75       */
    76      public void commitTransaction() throws JMSException;
    77
    78      /***
    79       * Rollback a persistence transaction
    80       *
    81       * @see PersistenceAdapter#beginTransaction()
    82       */
    83      public void rollbackTransaction();
    84  }