Package org.apache.activemq.store
Class ProxyTopicMessageStore
java.lang.Object
org.apache.activemq.store.ProxyMessageStore
org.apache.activemq.store.ProxyTopicMessageStore
- All Implemented Interfaces:
org.apache.activemq.Service,MessageStore,TopicMessageStore
A simple proxy that delegates to another MessageStore.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.activemq.store.MessageStore
MessageStore.StoreType -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidacknowledge(ConnectionContext context, String clientId, String subscriptionName, org.apache.activemq.command.MessageId messageId, org.apache.activemq.command.MessageAck ack) Stores the last acknowledged messgeID for the given subscription so that we can recover and commence dispatching messages from the last checkpointvoidaddMessage(ConnectionContext context, org.apache.activemq.command.Message message) Adds a message to the message storevoidaddMessage(ConnectionContext context, org.apache.activemq.command.Message message, boolean canOptimizeHint) Adds a message to the message storevoidaddSubscription(org.apache.activemq.command.SubscriptionInfo subscriptionInfo, boolean retroactive) Inserts the subscriber info due to a subscription changeasyncAddQueueMessage(ConnectionContext context, org.apache.activemq.command.Message message) Adds a message to the message storeasyncAddQueueMessage(ConnectionContext context, org.apache.activemq.command.Message message, boolean canOptimizeHint) Adds a message to the message storeasyncAddTopicMessage(ConnectionContext context, org.apache.activemq.command.Message message) Adds a message to the message storeasyncAddTopicMessage(ConnectionContext context, org.apache.activemq.command.Message message, boolean canOptimizeHint) Adds a message to the message storevoiddeleteSubscription(String clientId, String subscriptionName) voiddispose(ConnectionContext context) org.apache.activemq.command.SubscriptionInfo[]Lists all the durable subscriptions for a given destination.org.apache.activemq.command.ActiveMQDestinationThe destination that the message store is holding messages for.org.apache.activemq.command.MessagegetMessage(org.apache.activemq.command.MessageId identity) Looks up a message using either the String messageID or the messageNumber.intintgetMessageCount(String clientId, String subscriberName) Get the number of messages ready to deliver from the store to a durable subscriberlonglonggetMessageSize(String clientId, String subscriberName) Get the total size of the messages ready to deliver from the store to the durable subscriberThe subscription metrics contained in this storebooleanisEmpty()flag to indicate if the store is emptybooleanorg.apache.activemq.command.SubscriptionInfolookupSubscription(String clientId, String subscriptionName) Finds the subscriber entry for the given consumer infovoidrecover(MessageRecoveryListener listener) Recover any messages to be delivered.Map<SubscriptionKey,List<org.apache.activemq.command.Message>> recoverExpired(Set<SubscriptionKey> subs, int max, MessageRecoveryListener listener) Iterates over the pending messages in a topic and recovers any expired messages found for each of the subscriptions up to the maximum number of messages to search.voidrecoverNextMessages(int maxReturned, MessageRecoveryListener listener) voidrecoverNextMessages(String clientId, String subscriptionName, int maxReturned, MessageRecoveryListener listener) For an active subscription - retrieve messages from the store for the subscriber after the lastMessageId messageIdvoidrecoverSubscription(String clientId, String subscriptionName, MessageRecoveryListener listener) For the new subscription find the last acknowledged message ID and then find any new messages since then and dispatch them to the subscription.voidregisterIndexListener(IndexListener indexListener) voidremoveAllMessages(ConnectionContext context) Removes all the messages from the message store.voidremoveAsyncMessage(ConnectionContext context, org.apache.activemq.command.MessageAck ack) voidremoveMessage(ConnectionContext context, org.apache.activemq.command.MessageAck ack) Removes a message from the message store.voidA hint to the Store to reset any batching state for the DestinationvoidresetBatching(String clientId, String subscriptionName) A hint to the Store to reset any batching state for a durable subscribervoidsetBatch(org.apache.activemq.command.MessageId messageId) allow caching cursors to set the current batch offset when cache is exhaustedvoidsetMemoryUsage(org.apache.activemq.usage.MemoryUsage memoryUsage) voidsetPrioritizedMessages(boolean prioritizedMessages) A hint to the store to try recover messages according to priorityvoidstart()voidstop()voidupdateMessage(org.apache.activemq.command.Message message) Methods inherited from class org.apache.activemq.store.ProxyMessageStore
getType, recoverMessages, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.activemq.store.MessageStore
getType, recoverMessages
-
Constructor Details
-
ProxyTopicMessageStore
-
-
Method Details
-
getDelegate
- Overrides:
getDelegatein classProxyMessageStore
-
addMessage
public void addMessage(ConnectionContext context, org.apache.activemq.command.Message message) throws IOException Description copied from interface:MessageStoreAdds a message to the message store- Specified by:
addMessagein interfaceMessageStore- Overrides:
addMessagein classProxyMessageStore- Parameters:
context- context- Throws:
IOException
-
addMessage
public void addMessage(ConnectionContext context, org.apache.activemq.command.Message message, boolean canOptimizeHint) throws IOException Description copied from interface:MessageStoreAdds a message to the message store- Specified by:
addMessagein interfaceMessageStore- Overrides:
addMessagein classProxyMessageStore- Parameters:
context- contextcanOptimizeHint- - give a hint to the store that the message may be consumed before it hits the disk- Throws:
IOException
-
getMessage
public org.apache.activemq.command.Message getMessage(org.apache.activemq.command.MessageId identity) throws IOException Description copied from interface:MessageStoreLooks 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:
getMessagein interfaceMessageStore- Overrides:
getMessagein classProxyMessageStore- Parameters:
identity- which contains either the messageID or the messageNumber- Returns:
- the message or null if it does not exist
- Throws:
IOException
-
recover
Description copied from interface:MessageStoreRecover any messages to be delivered.- Specified by:
recoverin interfaceMessageStore- Overrides:
recoverin classProxyMessageStore- Throws:
Exception
-
removeAllMessages
Description copied from interface:MessageStoreRemoves all the messages from the message store.- Specified by:
removeAllMessagesin interfaceMessageStore- Overrides:
removeAllMessagesin classProxyMessageStore- Throws:
IOException
-
removeMessage
public void removeMessage(ConnectionContext context, org.apache.activemq.command.MessageAck ack) throws IOException Description copied from interface:MessageStoreRemoves a message from the message store.- Specified by:
removeMessagein interfaceMessageStore- Overrides:
removeMessagein classProxyMessageStoreack- 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
-
start
- Specified by:
startin interfaceorg.apache.activemq.Service- Overrides:
startin classProxyMessageStore- Throws:
Exception
-
stop
- Specified by:
stopin interfaceorg.apache.activemq.Service- Overrides:
stopin classProxyMessageStore- Throws:
Exception
-
lookupSubscription
public org.apache.activemq.command.SubscriptionInfo lookupSubscription(String clientId, String subscriptionName) throws IOException Description copied from interface:TopicMessageStoreFinds the subscriber entry for the given consumer info- Specified by:
lookupSubscriptionin interfaceTopicMessageStore- Returns:
- the SubscriptionInfo
- Throws:
IOException
-
acknowledge
public void acknowledge(ConnectionContext context, String clientId, String subscriptionName, org.apache.activemq.command.MessageId messageId, org.apache.activemq.command.MessageAck ack) throws IOException Description copied from interface:TopicMessageStoreStores the last acknowledged messgeID for the given subscription so that we can recover and commence dispatching messages from the last checkpoint- Specified by:
acknowledgein interfaceTopicMessageStore- Throws:
IOException
-
addSubscription
public void addSubscription(org.apache.activemq.command.SubscriptionInfo subscriptionInfo, boolean retroactive) throws IOException Description copied from interface:TopicMessageStoreInserts the subscriber info due to a subscription change If this is a new subscription and the retroactive is false, then the last message sent to the topic should be set as the last message acknowledged by they new subscription. Otherwise, if retroactive is true, then create the subscription without it having an acknowledged message so that on recovery, all message recorded for the topic get replayed.- Specified by:
addSubscriptionin interfaceTopicMessageStore- Throws:
IOException
-
deleteSubscription
- Specified by:
deleteSubscriptionin interfaceTopicMessageStore- Throws:
IOException
-
recoverSubscription
public void recoverSubscription(String clientId, String subscriptionName, MessageRecoveryListener listener) throws Exception Description copied from interface:TopicMessageStoreFor the new subscription find the last acknowledged message ID and then find any new messages since then and dispatch them to the subscription. e.g. if we dispatched some messages to a new durable topic subscriber, then went down before acknowledging any messages, we need to know the correct point from which to recover from.- Specified by:
recoverSubscriptionin interfaceTopicMessageStore- Throws:
Exception
-
recoverNextMessages
public void recoverNextMessages(String clientId, String subscriptionName, int maxReturned, MessageRecoveryListener listener) throws Exception Description copied from interface:TopicMessageStoreFor an active subscription - retrieve messages from the store for the subscriber after the lastMessageId messageId- Specified by:
recoverNextMessagesin interfaceTopicMessageStore- Throws:
Exception
-
resetBatching
Description copied from interface:TopicMessageStoreA hint to the Store to reset any batching state for a durable subscriber- Specified by:
resetBatchingin interfaceTopicMessageStore
-
getDestination
public org.apache.activemq.command.ActiveMQDestination getDestination()Description copied from interface:MessageStoreThe destination that the message store is holding messages for.- Specified by:
getDestinationin interfaceMessageStore- Overrides:
getDestinationin classProxyMessageStore- Returns:
- the destination
-
getAllSubscriptions
Description copied from interface:TopicMessageStoreLists all the durable subscriptions for a given destination.- Specified by:
getAllSubscriptionsin interfaceTopicMessageStore- Returns:
- an array SubscriptionInfos
- Throws:
IOException
-
setMemoryUsage
public void setMemoryUsage(org.apache.activemq.usage.MemoryUsage memoryUsage) - Specified by:
setMemoryUsagein interfaceMessageStore- Overrides:
setMemoryUsagein classProxyMessageStore- Parameters:
memoryUsage- The SystemUsage that is controlling the destination's memory usage.
-
getMessageCount
Description copied from interface:TopicMessageStoreGet the number of messages ready to deliver from the store to a durable subscriber- Specified by:
getMessageCountin interfaceTopicMessageStore- Returns:
- the outstanding message count
- Throws:
IOException
-
getMessageCount
- Specified by:
getMessageCountin interfaceMessageStore- Overrides:
getMessageCountin classProxyMessageStore- Returns:
- the number of messages ready to deliver
- Throws:
IOException
-
getMessageSize
- Specified by:
getMessageSizein interfaceMessageStore- Overrides:
getMessageSizein classProxyMessageStore- Returns:
- the size of the messages ready to deliver
- Throws:
IOException
-
recoverNextMessages
- Specified by:
recoverNextMessagesin interfaceMessageStore- Overrides:
recoverNextMessagesin classProxyMessageStore- Throws:
Exception
-
dispose
- Specified by:
disposein interfaceMessageStore- Overrides:
disposein classProxyMessageStore
-
resetBatching
public void resetBatching()Description copied from interface:MessageStoreA hint to the Store to reset any batching state for the Destination- Specified by:
resetBatchingin interfaceMessageStore- Overrides:
resetBatchingin classProxyMessageStore
-
setBatch
Description copied from interface:MessageStoreallow caching cursors to set the current batch offset when cache is exhausted- Specified by:
setBatchin interfaceMessageStore- Overrides:
setBatchin classProxyMessageStore- Throws:
Exception
-
isEmpty
Description copied from interface:MessageStoreflag to indicate if the store is empty- Specified by:
isEmptyin interfaceMessageStore- Overrides:
isEmptyin classProxyMessageStore- Returns:
- true if the message count is 0
- Throws:
Exception
-
asyncAddTopicMessage
public ListenableFuture<Object> asyncAddTopicMessage(ConnectionContext context, org.apache.activemq.command.Message message) throws IOException Description copied from interface:MessageStoreAdds a message to the message store- Specified by:
asyncAddTopicMessagein interfaceMessageStore- Overrides:
asyncAddTopicMessagein classProxyMessageStore- Parameters:
context- context- Returns:
- a ListenableFuture to track when this is complete
- Throws:
IOException
-
asyncAddTopicMessage
public ListenableFuture<Object> asyncAddTopicMessage(ConnectionContext context, org.apache.activemq.command.Message message, boolean canOptimizeHint) throws IOException Description copied from interface:MessageStoreAdds a message to the message store- Specified by:
asyncAddTopicMessagein interfaceMessageStore- Overrides:
asyncAddTopicMessagein classProxyMessageStore- Parameters:
context- contextcanOptimizeHint- - give a hint to the store that the message may be consumed before it hits the disk- Returns:
- a ListenableFuture to track when this is complete
- Throws:
IOException
-
asyncAddQueueMessage
public ListenableFuture<Object> asyncAddQueueMessage(ConnectionContext context, org.apache.activemq.command.Message message) throws IOException Description copied from interface:MessageStoreAdds a message to the message store- Specified by:
asyncAddQueueMessagein interfaceMessageStore- Overrides:
asyncAddQueueMessagein classProxyMessageStore- Parameters:
context- context- Returns:
- a Future to track when this is complete
- Throws:
IOException
-
asyncAddQueueMessage
public ListenableFuture<Object> asyncAddQueueMessage(ConnectionContext context, org.apache.activemq.command.Message message, boolean canOptimizeHint) throws IOException Description copied from interface:MessageStoreAdds a message to the message store- Specified by:
asyncAddQueueMessagein interfaceMessageStore- Overrides:
asyncAddQueueMessagein classProxyMessageStore- Parameters:
context- contextcanOptimizeHint- - give a hint to the store that the message may be consumed before it hits the disk- Returns:
- a Future to track when this is complete
- Throws:
IOException
-
removeAsyncMessage
public void removeAsyncMessage(ConnectionContext context, org.apache.activemq.command.MessageAck ack) throws IOException - Specified by:
removeAsyncMessagein interfaceMessageStore- Overrides:
removeAsyncMessagein classProxyMessageStore- Throws:
IOException
-
setPrioritizedMessages
public void setPrioritizedMessages(boolean prioritizedMessages) Description copied from interface:MessageStoreA hint to the store to try recover messages according to priority- Specified by:
setPrioritizedMessagesin interfaceMessageStore- Overrides:
setPrioritizedMessagesin classProxyMessageStore
-
isPrioritizedMessages
public boolean isPrioritizedMessages()- Specified by:
isPrioritizedMessagesin interfaceMessageStore- Overrides:
isPrioritizedMessagesin classProxyMessageStore- Returns:
- true if store is trying to recover messages according to priority
-
updateMessage
- Specified by:
updateMessagein interfaceMessageStore- Overrides:
updateMessagein classProxyMessageStore- Throws:
IOException
-
registerIndexListener
- Specified by:
registerIndexListenerin interfaceMessageStore- Overrides:
registerIndexListenerin classProxyMessageStore
-
getMessageStoreStatistics
- Specified by:
getMessageStoreStatisticsin interfaceMessageStore- Overrides:
getMessageStoreStatisticsin classProxyMessageStore- Returns:
- The statistics bean for this message store
-
getMessageSize
Description copied from interface:TopicMessageStoreGet the total size of the messages ready to deliver from the store to the durable subscriber- Specified by:
getMessageSizein interfaceTopicMessageStore- Returns:
- Throws:
IOException
-
getMessageStoreSubStatistics
Description copied from interface:TopicMessageStoreThe subscription metrics contained in this store- Specified by:
getMessageStoreSubStatisticsin interfaceTopicMessageStore- Returns:
-
recoverExpired
public Map<SubscriptionKey,List<org.apache.activemq.command.Message>> recoverExpired(Set<SubscriptionKey> subs, int max, MessageRecoveryListener listener) throws Exception Description copied from interface:TopicMessageStoreIterates over the pending messages in a topic and recovers any expired messages found for each of the subscriptions up to the maximum number of messages to search. Only subscriptions that have at least 1 expired message will be returned in the map.
The expiry listener is only used to verify if there is space. Messages that are expired and will be added to 1 or more subscription in the returned map will be passed to the callback. The callback will only be called once per each unique message.- Specified by:
recoverExpiredin interfaceTopicMessageStore- Parameters:
subs- The subscription keys to check for expired messagesmax- The maximum number of messages to check- Returns:
- Expired messages for each subscription
- Throws:
Exception
-