public class ConfigurableMongoDbMessageStore extends AbstractMessageGroupStore implements MessageStore, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware
MessageStore and MessageGroupStore which allows the user to
configure the instance of MongoTemplate. The mechanism of storing the messages/group of messages
in the store is and is different from MongoDbMessageStore. Since the store uses serialization of the
messages by default, all the headers, and the payload of the Message must implement Serializable
interfaceMessageGroupStore.MessageGroupCallback| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CREATED_DATE_KEY
The name of the message header that stores a timestamp for the time the message was inserted.
|
static java.lang.String |
DEFAULT_COLLECTION_NAME |
static java.lang.String |
SAVED_KEY
The name of the message header that stores a flag to indicate that the message has been saved.
|
logger| Constructor and Description |
|---|
ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory) |
ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
org.springframework.data.mongodb.core.convert.MappingMongoConverter mappingMongoConverter) |
ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
org.springframework.data.mongodb.core.convert.MappingMongoConverter mappingMongoConverter,
java.lang.String collectionName) |
ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
java.lang.String collectionName) |
ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.core.MongoTemplate mongoTemplate) |
ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.core.MongoTemplate mongoTemplate,
java.lang.String collectionName) |
| 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.
|
MessageGroup |
addMessageToGroup(java.lang.Object groupId,
org.springframework.messaging.Message<?> message)
Store a message with an association to a group id.
|
void |
afterPropertiesSet() |
void |
completeGroup(java.lang.Object groupId)
Completes this MessageGroup.
|
org.springframework.messaging.Message<?> |
getMessage(java.util.UUID id)
Return the Message with the given id, or null if no Message with that id exists in the MessageStore.
|
long |
getMessageCount()
Optional attribute giving the number of messages in the store.
|
MessageGroup |
getMessageGroup(java.lang.Object groupId)
Return all Messages currently in the MessageStore that were stored using
MessageGroupStore.addMessageToGroup(Object, Message) with this group id. |
java.util.Iterator<MessageGroup> |
iterator()
Returns the iterator of currently accumulated
MessageGroups |
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.
|
MessageGroup |
removeMessageFromGroup(java.lang.Object groupId,
org.springframework.messaging.Message<?> messageToRemove)
Persist a deletion on a single message from the group.
|
void |
removeMessageGroup(java.lang.Object groupId)
Remove the message group with this id.
|
void |
setApplicationContext(org.springframework.context.ApplicationContext applicationContext) |
void |
setLastReleasedSequenceNumberForGroup(java.lang.Object groupId,
int sequenceNumber)
Allows you to set the sequence number of the last released Message.
|
expireMessageGroups, getMessageCountForAllMessageGroups, getMessageGroupCount, isTimeoutOnIdle, registerMessageGroupExpiryCallback, setExpiryCallbacks, setTimeoutOnIdlepublic static final java.lang.String DEFAULT_COLLECTION_NAME
public static final java.lang.String SAVED_KEY
public static final java.lang.String CREATED_DATE_KEY
public ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.core.MongoTemplate mongoTemplate)
public ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.core.MongoTemplate mongoTemplate,
java.lang.String collectionName)
public ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory)
public ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
org.springframework.data.mongodb.core.convert.MappingMongoConverter mappingMongoConverter)
public ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
java.lang.String collectionName)
public ConfigurableMongoDbMessageStore(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
org.springframework.data.mongodb.core.convert.MappingMongoConverter mappingMongoConverter,
java.lang.String collectionName)
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
throws org.springframework.beans.BeansException
setApplicationContext in interface org.springframework.context.ApplicationContextAwareorg.springframework.beans.BeansExceptionpublic void afterPropertiesSet()
throws java.lang.Exception
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanjava.lang.Exceptionpublic org.springframework.messaging.Message<?> getMessage(java.util.UUID id)
MessageStoregetMessage in interface MessageStorepublic <T> org.springframework.messaging.Message<T> addMessage(org.springframework.messaging.Message<T> message)
MessageStoreMessageStore.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 MessageStorepublic org.springframework.messaging.Message<?> removeMessage(java.util.UUID id)
MessageStoreremoveMessage in interface MessageStorepublic long getMessageCount()
MessageStoregetMessageCount in interface MessageStorepublic int messageGroupSize(java.lang.Object groupId)
MessageGroupStoremessageGroupSize in interface MessageGroupStorepublic MessageGroup getMessageGroup(java.lang.Object groupId)
MessageGroupStoreMessageGroupStore.addMessageToGroup(Object, Message) with this group id.getMessageGroup in interface MessageGroupStorepublic MessageGroup addMessageToGroup(java.lang.Object groupId, org.springframework.messaging.Message<?> message)
MessageGroupStoreaddMessageToGroup in interface MessageGroupStoregroupId - the group id to store the message undermessage - a messagepublic MessageGroup removeMessageFromGroup(java.lang.Object groupId, org.springframework.messaging.Message<?> messageToRemove)
MessageGroupStoreremoveMessageFromGroup in interface MessageGroupStoregroupId - the groupId for the group containing the messagemessageToRemove - the message to be removedpublic void removeMessageGroup(java.lang.Object groupId)
MessageGroupStoreremoveMessageGroup in interface MessageGroupStoregroupId - the id of the group to removepublic java.util.Iterator<MessageGroup> iterator()
MessageGroupStoreMessageGroupsiterator in interface java.lang.Iterable<MessageGroup>iterator in interface MessageGroupStorepublic org.springframework.messaging.Message<?> pollMessageFromGroup(java.lang.Object groupId)
MessageGroupStoreMessageGroup (in FIFO style if supported by the implementation)
while also removing the polled MessagepollMessageFromGroup in interface MessageGroupStorepublic void setLastReleasedSequenceNumberForGroup(java.lang.Object groupId,
int sequenceNumber)
MessageGroupStoresetLastReleasedSequenceNumberForGroup in interface MessageGroupStorepublic void completeGroup(java.lang.Object groupId)
MessageGroupStorecompleteGroup in interface MessageGroupStore