public abstract class AbstractKeyValueMessageStore extends AbstractMessageGroupStore implements MessageStore
MessageGroupStore
and MessageStore
MessageGroupStore.MessageGroupCallback
Modifier and Type | Field and Description |
---|---|
protected static java.lang.String |
CREATED_DATE
Deprecated.
since 5.0. This constant isn't used any more.
|
protected static java.lang.String |
MESSAGE_GROUP_KEY_PREFIX |
protected static java.lang.String |
MESSAGE_KEY_PREFIX |
logger
Modifier | Constructor and Description |
---|---|
protected |
AbstractKeyValueMessageStore() |
protected |
AbstractKeyValueMessageStore(java.lang.String prefix)
Construct an instance based on the provided prefix for keys to distinguish between
different store instances in the same target key-value data base.
|
Modifier and Type | Method and Description |
---|---|
<T> org.springframework.messaging.Message<T> |
addMessage(org.springframework.messaging.Message<T> message)
Put the provided Message into the MessageStore.
|
void |
addMessagesToGroup(java.lang.Object groupId,
org.springframework.messaging.Message<?>... messages)
Store messages with an association to a group id.
|
void |
completeGroup(java.lang.Object groupId)
Completes this MessageGroup.
|
protected void |
doAddMessage(org.springframework.messaging.Message<?> message) |
protected abstract java.util.Collection<?> |
doListKeys(java.lang.String keyPattern) |
protected abstract java.lang.Object |
doRemove(java.lang.Object id) |
protected abstract void |
doRemoveAll(java.util.Collection<java.lang.Object> ids) |
protected abstract java.lang.Object |
doRetrieve(java.lang.Object id) |
protected abstract void |
doStore(java.lang.Object id,
java.lang.Object objectToStore) |
protected abstract void |
doStoreIfAbsent(java.lang.Object id,
java.lang.Object objectToStore) |
MessageGroupMetadata |
getGroupMetadata(java.lang.Object groupId)
Obtain the group metadata without fetching any messages; must supply all other
group properties; may include the id of the first message.
|
java.lang.String |
getGroupPrefix()
Return the configured prefix for message group keys to distinguish between
different store instances in the same target key-value data base.
|
org.springframework.messaging.Message<?> |
getMessage(java.util.UUID messageId) |
long |
getMessageCount()
Optional attribute giving the number of messages in the store.
|
MessageGroup |
getMessageGroup(java.lang.Object groupId)
Will create a new instance of SimpleMessageGroup if necessary.
|
MessageMetadata |
getMessageMetadata(java.util.UUID messageId)
|
protected java.lang.String |
getMessagePrefix()
Return the configured prefix for message keys to distinguish between different
store instances in the same target key-value data base.
|
java.util.Collection<org.springframework.messaging.Message<?>> |
getMessagesForGroup(java.lang.Object groupId)
Retrieve messages for the provided group id.
|
org.springframework.messaging.Message<?> |
getOneMessageFromGroup(java.lang.Object groupId)
Return the one
Message from MessageGroup . |
java.util.Iterator<MessageGroup> |
iterator() |
int |
messageGroupSize(java.lang.Object groupId)
Returns the size of this MessageGroup.
|
org.springframework.messaging.Message<?> |
pollMessageFromGroup(java.lang.Object groupId)
Polls Message from this
MessageGroup (in FIFO style if supported by the implementation)
while also removing the polled Message |
org.springframework.messaging.Message<?> |
removeMessage(java.util.UUID id)
Remove the Message with the given id from the MessageStore, if present, and return it.
|
void |
removeMessageGroup(java.lang.Object groupId)
Remove the MessageGroup with the provided group ID.
|
void |
removeMessagesFromGroup(java.lang.Object groupId,
java.util.Collection<org.springframework.messaging.Message<?>> messages)
Persist the deletion of messages from the group.
|
void |
setLastReleasedSequenceNumberForGroup(java.lang.Object groupId,
int sequenceNumber)
Allows you to set the sequence number of the last released Message.
|
addMessageToGroup, copy, expireMessageGroups, getMessageCountForAllMessageGroups, getMessageGroupCount, getMessageGroupFactory, isTimeoutOnIdle, registerMessageGroupExpiryCallback, removeMessagesFromGroup, setExpiryCallbacks, setLazyLoadMessageGroups, setTimeoutOnIdle
getRemoveBatchSize, setMessageGroupFactory, setRemoveBatchSize
protected static final java.lang.String MESSAGE_KEY_PREFIX
protected static final java.lang.String MESSAGE_GROUP_KEY_PREFIX
@Deprecated protected static final java.lang.String CREATED_DATE
protected AbstractKeyValueMessageStore()
protected AbstractKeyValueMessageStore(java.lang.String prefix)
prefix + MESSAGE_
; for message groups - prefix + MESSAGE_GROUP_
prefix
- the prefix to useprotected java.lang.String getMessagePrefix()
public java.lang.String getGroupPrefix()
public org.springframework.messaging.Message<?> getMessage(java.util.UUID messageId)
getMessage
in interface MessageStore
messageId
- The message identifier.public MessageMetadata getMessageMetadata(java.util.UUID messageId)
MessageStore
getMessageMetadata
in interface MessageStore
messageId
- The message identifier.public <T> org.springframework.messaging.Message<T> addMessage(org.springframework.messaging.Message<T> message)
MessageStore
MessageStore.getMessage(UUID)
and MessageStore.removeMessage(UUID)
behave properly. Since messages are
immutable, putting the same message more than once is a no-op.addMessage
in interface MessageStore
T
- The payload type.message
- The message.protected void doAddMessage(org.springframework.messaging.Message<?> message)
public org.springframework.messaging.Message<?> removeMessage(java.util.UUID id)
MessageStore
removeMessage
in interface MessageStore
id
- THe message identifier.@ManagedAttribute public long getMessageCount()
MessageStore
getMessageCount
in interface MessageStore
public MessageGroup getMessageGroup(java.lang.Object groupId)
getMessageGroup
in interface BasicMessageGroupStore
groupId
- The group identifier.public MessageGroupMetadata getGroupMetadata(java.lang.Object groupId)
MessageGroupStore
getGroupMetadata
in interface MessageGroupStore
getGroupMetadata
in class AbstractMessageGroupStore
groupId
- The group id.public void addMessagesToGroup(java.lang.Object groupId, org.springframework.messaging.Message<?>... messages)
MessageGroupStore
addMessagesToGroup
in interface MessageGroupStore
groupId
- The group id to store messages under.messages
- The messages to add.public void removeMessagesFromGroup(java.lang.Object groupId, java.util.Collection<org.springframework.messaging.Message<?>> messages)
MessageGroupStore
removeMessagesFromGroup
in interface MessageGroupStore
groupId
- The groupId for the group containing the message(s).messages
- The messages to be removed.public void completeGroup(java.lang.Object groupId)
MessageGroupStore
completeGroup
in interface MessageGroupStore
groupId
- The group identifier.public void removeMessageGroup(java.lang.Object groupId)
removeMessageGroup
in interface BasicMessageGroupStore
groupId
- The id of the group to remove.public void setLastReleasedSequenceNumberForGroup(java.lang.Object groupId, int sequenceNumber)
MessageGroupStore
setLastReleasedSequenceNumberForGroup
in interface MessageGroupStore
groupId
- The group identifier.sequenceNumber
- The sequence number.public org.springframework.messaging.Message<?> pollMessageFromGroup(java.lang.Object groupId)
BasicMessageGroupStore
MessageGroup
(in FIFO style if supported by the implementation)
while also removing the polled Message
pollMessageFromGroup
in interface BasicMessageGroupStore
groupId
- The group identifier.public org.springframework.messaging.Message<?> getOneMessageFromGroup(java.lang.Object groupId)
MessageGroupStore
Message
from MessageGroup
.getOneMessageFromGroup
in interface MessageGroupStore
groupId
- The group identifier.Message
.public java.util.Collection<org.springframework.messaging.Message<?>> getMessagesForGroup(java.lang.Object groupId)
MessageGroupStore
getMessagesForGroup
in interface MessageGroupStore
groupId
- The group id to retrieve messages for.public java.util.Iterator<MessageGroup> iterator()
iterator
in interface java.lang.Iterable<MessageGroup>
iterator
in interface MessageGroupStore
MessageGroup
s.public int messageGroupSize(java.lang.Object groupId)
BasicMessageGroupStore
messageGroupSize
in interface BasicMessageGroupStore
groupId
- The group identifier.protected abstract java.lang.Object doRetrieve(java.lang.Object id)
protected abstract void doStore(java.lang.Object id, java.lang.Object objectToStore)
protected abstract void doStoreIfAbsent(java.lang.Object id, java.lang.Object objectToStore)
protected abstract java.lang.Object doRemove(java.lang.Object id)
protected abstract void doRemoveAll(java.util.Collection<java.lang.Object> ids)
protected abstract java.util.Collection<?> doListKeys(java.lang.String keyPattern)