Class ConfigurableMongoDbMessageStore
java.lang.Object
org.springframework.integration.store.AbstractBatchingMessageGroupStore
org.springframework.integration.store.AbstractMessageGroupStore
org.springframework.integration.mongodb.store.AbstractConfigurableMongoDbMessageStore
org.springframework.integration.mongodb.store.ConfigurableMongoDbMessageStore
- All Implemented Interfaces:
Iterable<MessageGroup>
,Aware
,InitializingBean
,ApplicationContextAware
,BasicMessageGroupStore
,MessageGroupStore
,MessageStore
public class ConfigurableMongoDbMessageStore
extends AbstractConfigurableMongoDbMessageStore
implements MessageStore
An alternate MongoDB
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
interface- Since:
- 3.0
- Author:
- Amol Nayak, Artem Bilan, Gary Russell, Ngoc Nhan, Youbin Wu
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.integration.store.MessageGroupStore
MessageGroupStore.MessageGroupCallback
-
Field Summary
Fields inherited from class org.springframework.integration.mongodb.store.AbstractConfigurableMongoDbMessageStore
collectionName, logger, mongoDbFactory, SEQUENCE_NAME
Fields inherited from class org.springframework.integration.store.AbstractMessageGroupStore
INTERRUPTED_WHILE_OBTAINING_LOCK
-
Constructor Summary
ConstructorDescriptionConfigurableMongoDbMessageStore
(MongoTemplate mongoTemplate) ConfigurableMongoDbMessageStore
(MongoTemplate mongoTemplate, String collectionName) ConfigurableMongoDbMessageStore
(MongoDatabaseFactory mongoDbFactory) ConfigurableMongoDbMessageStore
(MongoDatabaseFactory mongoDbFactory, String collectionName) ConfigurableMongoDbMessageStore
(MongoDatabaseFactory mongoDbFactory, MappingMongoConverter mappingMongoConverter) ConfigurableMongoDbMessageStore
(MongoDatabaseFactory mongoDbFactory, MappingMongoConverter mappingMongoConverter, String collectionName) -
Method Summary
Modifier and TypeMethodDescription<T> Message<T>
addMessage
(Message<T> message) Put the provided Message into the MessageStore.addMessageToGroup
(Object groupId, Message<?> message) Store a message with an association to a group id.protected void
doAddMessagesToGroup
(Object groupId, Message<?>... messages) protected void
doCompleteGroup
(Object groupId) protected Message<?>
doPollMessageFromGroup
(Object groupId) protected boolean
doRemoveMessageFromGroupById
(Object groupId, UUID messageId) protected void
doRemoveMessagesFromGroup
(Object groupId, Collection<Message<?>> messages) protected void
doSetGroupCondition
(Object groupId, String condition) protected void
doSetLastReleasedSequenceNumberForGroup
(Object groupId, int sequenceNumber) long
Optional attribute giving the number of messages in the store.int
Optional attribute giving the number of messages in the store over all groups.Message<?>
getMessageFromGroup
(Object groupId, UUID messageId) Retrieve aMessage
from a group by id.getMessageGroup
(Object groupId) Return all Messages currently in the MessageStore that were stored usingBasicMessageGroupStore.addMessageToGroup(Object, Message)
with this group id.int
Optional attribute giving the number of message groups.Collection<Message<?>>
getMessagesForGroup
(Object groupId) Retrieve messages for the provided group id.Message<?>
getOneMessageFromGroup
(Object groupId) Return the oneMessage
fromMessageGroup
.iterator()
Message<?>
removeMessage
(UUID id) Remove the Message with the given id from the MessageStore, if present, and return it.streamMessagesForGroup
(Object groupId) Return a stream for messages stored in the provided group.Methods inherited from class org.springframework.integration.mongodb.store.AbstractConfigurableMongoDbMessageStore
addMessageDocument, afterPropertiesSet, createIndexes, doRemoveMessageGroup, getApplicationContext, getMappingMongoConverter, getMessage, getMessageBuilderFactory, getMessageMetadata, getMongoTemplate, getNextId, groupIdQuery, messageGroupSize, setApplicationContext, setCreateIndexes
Methods inherited from class org.springframework.integration.store.AbstractMessageGroupStore
addMessagesToGroup, completeGroup, copy, executeLocked, executeLocked, expireMessageGroups, getGroupMetadata, getLockRegistry, getMessageGroupFactory, isTimeoutOnIdle, pollMessageFromGroup, registerMessageGroupExpiryCallback, removeMessageFromGroupById, removeMessageGroup, removeMessagesFromGroup, removeMessagesFromGroup, setExpiryCallbacks, setGroupCondition, setLastReleasedSequenceNumberForGroup, setLazyLoadMessageGroups, setLockRegistry, setTimeoutOnIdle
Methods inherited from class org.springframework.integration.store.AbstractBatchingMessageGroupStore
getRemoveBatchSize, setMessageGroupFactory, setRemoveBatchSize
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods inherited from interface org.springframework.integration.store.MessageStore
getMessage, getMessageMetadata
-
Field Details
-
DEFAULT_COLLECTION_NAME
- See Also:
-
-
Constructor Details
-
ConfigurableMongoDbMessageStore
-
ConfigurableMongoDbMessageStore
-
ConfigurableMongoDbMessageStore
-
ConfigurableMongoDbMessageStore
public ConfigurableMongoDbMessageStore(MongoDatabaseFactory mongoDbFactory, MappingMongoConverter mappingMongoConverter) -
ConfigurableMongoDbMessageStore
-
ConfigurableMongoDbMessageStore
public ConfigurableMongoDbMessageStore(MongoDatabaseFactory mongoDbFactory, MappingMongoConverter mappingMongoConverter, String collectionName)
-
-
Method Details
-
addMessage
Description copied from interface:MessageStore
Put the provided Message into the MessageStore. The store may need to mutate the message internally, and if it does then the return value can be different than the input. The id of the return value will be used as an index so that theMessageStore.getMessage(UUID)
andMessageStore.removeMessage(UUID)
behave properly. Since messages are immutable, putting the same message more than once is a no-op.- Specified by:
addMessage
in interfaceMessageStore
- Type Parameters:
T
- The payload type.- Parameters:
message
- The message.- Returns:
- The message that was stored.
-
removeMessage
Description copied from interface:MessageStore
Remove the Message with the given id from the MessageStore, if present, and return it. If no Message with that id is present in the store, this will returnnull
. If this method is implemented on aMessageGroupStore
, the message is removed from the store only if no groups holding this message.- Specified by:
removeMessage
in interfaceMessageStore
- Parameters:
id
- the message identifier.- Returns:
- the message (if any).
-
getMessageCount
public long getMessageCount()Description copied from interface:MessageStore
Optional attribute giving the number of messages in the store. Implementations may decline to respond by throwing an exception.- Specified by:
getMessageCount
in interfaceMessageStore
- Returns:
- The number of messages.
-
getMessageGroup
Description copied from interface:BasicMessageGroupStore
Return all Messages currently in the MessageStore that were stored usingBasicMessageGroupStore.addMessageToGroup(Object, Message)
with this group id.- Specified by:
getMessageGroup
in interfaceBasicMessageGroupStore
- Parameters:
groupId
- The group identifier.- Returns:
- A group of messages, empty if none exists for this key.
-
addMessageToGroup
Description copied from interface:BasicMessageGroupStore
Store a message with an association to a group id. This can be used to group messages together.- Specified by:
addMessageToGroup
in interfaceBasicMessageGroupStore
- Overrides:
addMessageToGroup
in classAbstractMessageGroupStore
- Parameters:
groupId
- The group id to store the message under.message
- A message.- Returns:
- The message group.
-
doAddMessagesToGroup
- Overrides:
doAddMessagesToGroup
in classAbstractConfigurableMongoDbMessageStore
-
doRemoveMessagesFromGroup
- Overrides:
doRemoveMessagesFromGroup
in classAbstractConfigurableMongoDbMessageStore
-
getMessageFromGroup
Description copied from interface:MessageGroupStore
Retrieve aMessage
from a group by id. Returnnull
if message does not belong to the requested group.- Specified by:
getMessageFromGroup
in interfaceMessageGroupStore
- Parameters:
groupId
- The groupId for the group containing the message.messageId
- The message id.- Returns:
- message by id if it belongs to requested group.
-
doRemoveMessageFromGroupById
- Overrides:
doRemoveMessageFromGroupById
in classAbstractMessageGroupStore
-
doPollMessageFromGroup
- Specified by:
doPollMessageFromGroup
in classAbstractMessageGroupStore
-
doSetLastReleasedSequenceNumberForGroup
- Overrides:
doSetLastReleasedSequenceNumberForGroup
in classAbstractConfigurableMongoDbMessageStore
-
doSetGroupCondition
- Overrides:
doSetGroupCondition
in classAbstractConfigurableMongoDbMessageStore
-
doCompleteGroup
- Overrides:
doCompleteGroup
in classAbstractConfigurableMongoDbMessageStore
-
iterator
- Specified by:
iterator
in interfaceIterable<MessageGroup>
- Specified by:
iterator
in interfaceMessageGroupStore
- Overrides:
iterator
in classAbstractConfigurableMongoDbMessageStore
- Returns:
- The iterator of currently accumulated
MessageGroup
s.
-
getMessageCountForAllMessageGroups
Description copied from interface:MessageGroupStore
Optional attribute giving the number of messages in the store over all groups. Implementations may decline to respond by throwing an exception.- Specified by:
getMessageCountForAllMessageGroups
in interfaceMessageGroupStore
- Overrides:
getMessageCountForAllMessageGroups
in classAbstractMessageGroupStore
- Returns:
- the number of messages
-
getMessageGroupCount
Description copied from interface:MessageGroupStore
Optional attribute giving the number of message groups. Implementations may decline to respond by throwing an exception.- Specified by:
getMessageGroupCount
in interfaceMessageGroupStore
- Overrides:
getMessageGroupCount
in classAbstractMessageGroupStore
- Returns:
- the number message groups
-
getOneMessageFromGroup
Description copied from interface:MessageGroupStore
Return the oneMessage
fromMessageGroup
.- Specified by:
getOneMessageFromGroup
in interfaceMessageGroupStore
- Overrides:
getOneMessageFromGroup
in classAbstractConfigurableMongoDbMessageStore
- Parameters:
groupId
- The group identifier.- Returns:
- the
Message
.
-
getMessagesForGroup
Description copied from interface:MessageGroupStore
Retrieve messages for the provided group id.- Specified by:
getMessagesForGroup
in interfaceMessageGroupStore
- Overrides:
getMessagesForGroup
in classAbstractConfigurableMongoDbMessageStore
- Parameters:
groupId
- The group id to retrieve messages for.- Returns:
- the messages for group.
-
streamMessagesForGroup
Description copied from interface:MessageGroupStore
Return a stream for messages stored in the provided group. The persistent implementations return a Stream which has to be closed once fully processed (e.g. through a try-with-resources clause). By default, it streams a result ofMessageGroupStore.getMessagesForGroup(Object)
.- Specified by:
streamMessagesForGroup
in interfaceMessageGroupStore
- Parameters:
groupId
- the group id to retrieve messages.- Returns:
- the
Stream
for messages in this group.
-