org.apache.activemq.store.journal
Class JournalMessageStore

java.lang.Object
  extended by org.apache.activemq.store.journal.JournalMessageStore
All Implemented Interfaces:
Service, MessageStore
Direct Known Subclasses:
JournalTopicMessageStore

public class JournalMessageStore
extends Object
implements MessageStore

A MessageStore that uses a Journal to store it's messages.

Version:
$Revision: 1.14 $

Field Summary
protected  ActiveMQDestination destination
           
protected  HashSet inFlightTxLocations
           
protected  org.apache.activeio.journal.RecordLocation lastLocation
           
protected  MessageStore longTermStore
           
protected  JournalPersistenceAdapter peristenceAdapter
           
protected  JournalTransactionStore transactionStore
           
protected  TransactionTemplate transactionTemplate
           
 
Constructor Summary
JournalMessageStore(JournalPersistenceAdapter adapter, MessageStore checkpointStore, ActiveMQDestination destination)
           
 
Method Summary
 void addMessage(ConnectionContext context, Message message)
          Not synchronized since the Journal has better throughput if you increase the number of concurrent writes that it is doing.
 void addMessageReference(ConnectionContext context, MessageId messageId, long expirationTime, String messageRef)
          Adds a message reference to the message store
 org.apache.activeio.journal.RecordLocation checkpoint()
           
 org.apache.activeio.journal.RecordLocation checkpoint(Callback postCheckpointTest)
           
 ActiveMQDestination getDestination()
          The destination that the message store is holding messages for.
 MessageStore getLongTermMessageStore()
           
 Message getMessage(MessageId identity)
          Looks up a message using either the String messageID or the messageNumber.
 String getMessageReference(MessageId identity)
          Looks up a message using either the String messageID or the messageNumber.
 void recover(MessageRecoveryListener listener)
          Replays the checkpointStore first as those messages are the oldest ones, then messages are replayed from the transaction log and then the cache is updated.
 void removeAllMessages(ConnectionContext context)
          Removes all the messages from the message store.
 void removeMessage(ConnectionContext context, MessageAck ack)
          Removes a message from the message store.
 void replayAddMessage(ConnectionContext context, Message message)
           
 void replayRemoveMessage(ConnectionContext context, MessageAck messageAck)
           
 void setUsageManager(UsageManager usageManager)
           
 void start()
           
 void stop()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

peristenceAdapter

protected final JournalPersistenceAdapter peristenceAdapter

transactionStore

protected final JournalTransactionStore transactionStore

longTermStore

protected final MessageStore longTermStore

destination

protected final ActiveMQDestination destination

transactionTemplate

protected final TransactionTemplate transactionTemplate

lastLocation

protected org.apache.activeio.journal.RecordLocation lastLocation

inFlightTxLocations

protected HashSet inFlightTxLocations
Constructor Detail

JournalMessageStore

public JournalMessageStore(JournalPersistenceAdapter adapter,
                           MessageStore checkpointStore,
                           ActiveMQDestination destination)
Method Detail

setUsageManager

public void setUsageManager(UsageManager usageManager)
Specified by:
setUsageManager in interface MessageStore
Parameters:
usageManager - The UsageManager that is controlling the destination's memory usage.

addMessage

public void addMessage(ConnectionContext context,
                       Message message)
                throws IOException
Not synchronized since the Journal has better throughput if you increase the number of concurrent writes that it is doing.

Specified by:
addMessage in interface MessageStore
Parameters:
context - TODO
Throws:
IOException

replayAddMessage

public void replayAddMessage(ConnectionContext context,
                             Message message)

removeMessage

public void removeMessage(ConnectionContext context,
                          MessageAck ack)
                   throws IOException
Description copied from interface: MessageStore
Removes a message from the message store.

Specified by:
removeMessage in interface MessageStore
Parameters:
context - TODO
ack - the ack request that cause the message to be removed. It conatins the identity which contains the messageID of the message that needs to be removed.
Throws:
IOException

replayRemoveMessage

public void replayRemoveMessage(ConnectionContext context,
                                MessageAck messageAck)

checkpoint

public org.apache.activeio.journal.RecordLocation checkpoint()
                                                      throws IOException
Returns:
Throws:
IOException

checkpoint

public org.apache.activeio.journal.RecordLocation checkpoint(Callback postCheckpointTest)
                                                      throws IOException
Returns:
Throws:
IOException

getMessage

public Message getMessage(MessageId identity)
                   throws IOException
Description copied from interface: MessageStore
Looks up a message using either the String messageID or the messageNumber. Implementations are encouraged to fill in the missing key if its easy to do so.

Specified by:
getMessage in interface MessageStore
Parameters:
identity - which contains either the messageID or the messageNumber
Returns:
the message or null if it does not exist
Throws:
IOException

recover

public void recover(MessageRecoveryListener listener)
             throws Exception
Replays the checkpointStore first as those messages are the oldest ones, then messages are replayed from the transaction log and then the cache is updated.

Specified by:
recover in interface MessageStore
Parameters:
listener -
Throws:
Exception

start

public void start()
           throws Exception
Specified by:
start in interface Service
Throws:
Exception

stop

public void stop()
          throws Exception
Specified by:
stop in interface Service
Throws:
Exception

getLongTermMessageStore

public MessageStore getLongTermMessageStore()
Returns:
Returns the longTermStore.

removeAllMessages

public void removeAllMessages(ConnectionContext context)
                       throws IOException
Description copied from interface: MessageStore
Removes all the messages from the message store.

Specified by:
removeAllMessages in interface MessageStore
Parameters:
context - TODO
Throws:
IOException
See Also:
MessageStore.removeAllMessages(ConnectionContext)

getDestination

public ActiveMQDestination getDestination()
Description copied from interface: MessageStore
The destination that the message store is holding messages for.

Specified by:
getDestination in interface MessageStore
Returns:

addMessageReference

public void addMessageReference(ConnectionContext context,
                                MessageId messageId,
                                long expirationTime,
                                String messageRef)
                         throws IOException
Description copied from interface: MessageStore
Adds a message reference to the message store

Specified by:
addMessageReference in interface MessageStore
Parameters:
context - TODO
messageId - TODO
expirationTime - TODO
Throws:
IOException

getMessageReference

public String getMessageReference(MessageId identity)
                           throws IOException
Description copied from interface: MessageStore
Looks up a message using either the String messageID or the messageNumber. Implementations are encouraged to fill in the missing key if its easy to do so.

Specified by:
getMessageReference in interface MessageStore
Parameters:
identity - which contains either the messageID or the messageNumber
Returns:
the message or null if it does not exist
Throws:
IOException


Copyright © 2011 Apache Software Foundation. All Rights Reserved.