Class MongoDbMessageStore
java.lang.Object
org.springframework.integration.store.AbstractBatchingMessageGroupStore
org.springframework.integration.store.AbstractMessageGroupStore
org.springframework.integration.mongodb.store.MongoDbMessageStore
- All Implemented Interfaces:
- Iterable<MessageGroup>,- Aware,- BeanClassLoaderAware,- InitializingBean,- ApplicationContextAware,- BasicMessageGroupStore,- MessageGroupStore,- MessageStore
public class MongoDbMessageStore
extends AbstractMessageGroupStore
implements MessageStore, BeanClassLoaderAware, ApplicationContextAware, InitializingBean
An implementation of both the 
MessageStore and
 MessageGroupStore
 strategies that relies upon MongoDB for persistence.- Since:
- 2.1
- Author:
- Mark Fisher, Oleg Zhurakousky, Sean Brandt, Jodie StJohn, Gary Russell, Artem Bilan, Youbin Wu
- 
Nested Class SummaryNested classes/interfaces inherited from interface org.springframework.integration.store.MessageGroupStoreMessageGroupStore.MessageGroupCallback
- 
Field SummaryFieldsFields inherited from class org.springframework.integration.store.AbstractMessageGroupStoreINTERRUPTED_WHILE_OBTAINING_LOCK, logger
- 
Constructor SummaryConstructorsConstructorDescriptionMongoDbMessageStore(MongoDatabaseFactory mongoDbFactory) Create a MongoDbMessageStore using the providedMongoDatabaseFactory.and the default collection name.MongoDbMessageStore(MongoDatabaseFactory mongoDbFactory, String collectionName) Create a MongoDbMessageStore using the providedMongoDatabaseFactoryand collection name.
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddAllowedPatterns(String... patterns) Add patterns for packages/classes that are allowed to be deserialized.<T> Message<T> addMessage(Message<T> message) Put the provided Message into the MessageStore.voidprotected voiddoAddMessagesToGroup(Object groupId, Message<?>... messages) protected voiddoCompleteGroup(Object groupId) protected Message<?> doPollMessageFromGroup(Object groupId) protected booleandoRemoveMessageFromGroupById(Object groupId, UUID messageId) protected voiddoRemoveMessageGroup(Object groupId) protected voiddoRemoveMessagesFromGroup(Object groupId, Collection<Message<?>> messages) protected voiddoSetGroupCondition(Object groupId, String condition) protected voiddoSetLastReleasedSequenceNumberForGroup(Object groupId, int sequenceNumber) Message<?> getMessage(UUID id) longOptional attribute giving the number of messages in the store.intOptional attribute giving the number of messages in the store over all groups.Message<?> getMessageFromGroup(Object groupId, UUID messageId) Retrieve aMessagefrom 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.intOptional 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 oneMessagefromMessageGroup.iterator()intmessageGroupSize(Object groupId) Return the size of this MessageGroup.Message<?> removeMessage(UUID id) Remove the Message with the given id from the MessageStore, if present, and return it.voidsetApplicationContext(ApplicationContext applicationContext) voidsetBeanClassLoader(ClassLoader classLoader) voidsetCustomConverters(Object... customConverters) Configure a set of converters to use in theMappingMongoConverter.streamMessagesForGroup(Object groupId) Return a stream for messages stored in the provided group.Methods inherited from class org.springframework.integration.store.AbstractMessageGroupStoreaddMessagesToGroup, addMessageToGroup, completeGroup, copy, executeLocked, executeLocked, expireMessageGroups, getGroupMetadata, getLockRegistry, getMessageGroupFactory, isTimeoutOnIdle, pollMessageFromGroup, registerMessageGroupExpiryCallback, removeMessageFromGroupById, removeMessageGroup, removeMessagesFromGroup, removeMessagesFromGroup, setExpiryCallbacks, setGroupCondition, setLastReleasedSequenceNumberForGroup, setLazyLoadMessageGroups, setLockRegistry, setTimeoutOnIdleMethods inherited from class org.springframework.integration.store.AbstractBatchingMessageGroupStoregetRemoveBatchSize, setMessageGroupFactory, setRemoveBatchSizeMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.IterableforEach, spliterator
- 
Field Details- 
SEQUENCE_NAME- See Also:
 
 
- 
- 
Constructor Details- 
MongoDbMessageStoreCreate a MongoDbMessageStore using the providedMongoDatabaseFactory.and the default collection name.- Parameters:
- mongoDbFactory- The mongodb factory.
 
- 
MongoDbMessageStoreCreate a MongoDbMessageStore using the providedMongoDatabaseFactoryand collection name.- Parameters:
- mongoDbFactory- The mongodb factory.
- collectionName- The collection name.
 
 
- 
- 
Method Details- 
setBeanClassLoader- Specified by:
- setBeanClassLoaderin interface- BeanClassLoaderAware
 
- 
setApplicationContext- Specified by:
- setApplicationContextin interface- ApplicationContextAware
- Throws:
- BeansException
 
- 
addAllowedPatternsAdd patterns for packages/classes that are allowed to be deserialized. A class can be fully qualified or a wildcard '*' is allowed at the beginning or end of the class name. Examples:com.foo.*,*.MyClass.- Parameters:
- patterns- the patterns.
- Since:
- 5.4
 
- 
setCustomConvertersConfigure a set of converters to use in theMappingMongoConverter. Must be instances oforg.springframework.core.convert.converter.Converter,org.springframework.core.convert.converter.ConverterFactory,org.springframework.core.convert.converter.GenericConverterororg.springframework.data.convert.ConverterBuilder.ConverterAware.- Parameters:
- customConverters- the converters to use.
- Since:
- 5.1.6
 
- 
afterPropertiesSetpublic void afterPropertiesSet()- Specified by:
- afterPropertiesSetin interface- InitializingBean
 
- 
addMessageDescription copied from interface:MessageStorePut 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:
- addMessagein interface- MessageStore
- Type Parameters:
- T- The payload type.
- Parameters:
- message- The message.
- Returns:
- The message that was stored.
 
- 
getMessage- Specified by:
- getMessagein interface- MessageStore
- Parameters:
- id- The message identifier.
- Returns:
- The Message with the given id, or null if no Message with that id exists in the MessageStore.
 
- 
getMessageMetadataDescription copied from interface:MessageStore- Specified by:
- getMessageMetadatain interface- MessageStore
- Parameters:
- id- The message identifier.
- Returns:
- The MessageMetadata with the given id, or null if no Message with that id exists in the MessageStore or the message has no metadata (legacy message from an earlier version).
 
- 
getMessageCountDescription copied from interface:MessageStoreOptional attribute giving the number of messages in the store. Implementations may decline to respond by throwing an exception.- Specified by:
- getMessageCountin interface- MessageStore
- Returns:
- The number of messages.
 
- 
removeMessageDescription copied from interface:MessageStoreRemove 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:
- removeMessagein interface- MessageStore
- Parameters:
- id- the message identifier.
- Returns:
- the message (if any).
 
- 
getMessageGroupDescription copied from interface:BasicMessageGroupStoreReturn all Messages currently in the MessageStore that were stored usingBasicMessageGroupStore.addMessageToGroup(Object, Message)with this group id.- Specified by:
- getMessageGroupin interface- BasicMessageGroupStore
- Parameters:
- groupId- The group identifier.
- Returns:
- A group of messages, empty if none exists for this key.
 
- 
doAddMessagesToGroup- Specified by:
- doAddMessagesToGroupin class- AbstractMessageGroupStore
 
- 
doRemoveMessagesFromGroup- Specified by:
- doRemoveMessagesFromGroupin class- AbstractMessageGroupStore
 
- 
getMessageFromGroupDescription copied from interface:MessageGroupStoreRetrieve aMessagefrom a group by id. Returnnullif message does not belong to the requested group.- Specified by:
- getMessageFromGroupin interface- MessageGroupStore
- 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:
- doRemoveMessageFromGroupByIdin class- AbstractMessageGroupStore
 
- 
doRemoveMessageGroup- Specified by:
- doRemoveMessageGroupin class- AbstractMessageGroupStore
 
- 
iterator- Specified by:
- iteratorin interface- Iterable<MessageGroup>
- Specified by:
- iteratorin interface- MessageGroupStore
- Returns:
- The iterator of currently accumulated MessageGroups.
 
- 
doPollMessageFromGroup- Specified by:
- doPollMessageFromGroupin class- AbstractMessageGroupStore
 
- 
messageGroupSizeDescription copied from interface:BasicMessageGroupStoreReturn the size of this MessageGroup.- Specified by:
- messageGroupSizein interface- BasicMessageGroupStore
- Parameters:
- groupId- The group identifier.
- Returns:
- The size.
 
- 
doSetGroupCondition- Specified by:
- doSetGroupConditionin class- AbstractMessageGroupStore
 
- 
doSetLastReleasedSequenceNumberForGroup- Specified by:
- doSetLastReleasedSequenceNumberForGroupin class- AbstractMessageGroupStore
 
- 
doCompleteGroup- Specified by:
- doCompleteGroupin class- AbstractMessageGroupStore
 
- 
getOneMessageFromGroupDescription copied from interface:MessageGroupStoreReturn the oneMessagefromMessageGroup.- Specified by:
- getOneMessageFromGroupin interface- MessageGroupStore
- Parameters:
- groupId- The group identifier.
- Returns:
- the Message.
 
- 
getMessagesForGroupDescription copied from interface:MessageGroupStoreRetrieve messages for the provided group id.- Specified by:
- getMessagesForGroupin interface- MessageGroupStore
- Parameters:
- groupId- The group id to retrieve messages for.
- Returns:
- the messages for group.
 
- 
streamMessagesForGroupDescription copied from interface:MessageGroupStoreReturn 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:
- streamMessagesForGroupin interface- MessageGroupStore
- Parameters:
- groupId- the group id to retrieve messages.
- Returns:
- the Streamfor messages in this group.
 
- 
getMessageCountForAllMessageGroupsDescription copied from interface:MessageGroupStoreOptional attribute giving the number of messages in the store over all groups. Implementations may decline to respond by throwing an exception.- Specified by:
- getMessageCountForAllMessageGroupsin interface- MessageGroupStore
- Overrides:
- getMessageCountForAllMessageGroupsin class- AbstractMessageGroupStore
- Returns:
- the number of messages
 
- 
getMessageGroupCountDescription copied from interface:MessageGroupStoreOptional attribute giving the number of message groups. Implementations may decline to respond by throwing an exception.- Specified by:
- getMessageGroupCountin interface- MessageGroupStore
- Overrides:
- getMessageGroupCountin class- AbstractMessageGroupStore
- Returns:
- the number message groups
 
 
-