Interface MessageLockService
- All Known Implementing Classes:
 DefaultMessageLockService
public interface MessageLockService
Service that is responsible for managing locks for the processing of a 
Message. These
 locks are leveraged by the IdempotentMessageConsumptionService to ensure that a message
 is only processed once per listener.- Author:
 - Chris Kittrell (ckittrell)
 
- 
Method Summary
Modifier and TypeMethodDescriptionobtainLock(org.springframework.messaging.Message<?> message, String listenerName) default voidpurgeLocks(Duration messageLockTtl) Deprecated.default voidpurgeLocks(Duration messageLockTtl, Set<String> additionalLockTypes) Deletes all message locks that are out of date according to themessageLockTtl.voidreleaseLock(String lockToken) Releases the lock so that the relevant message can be processed again. 
- 
Method Details
- 
obtainLock
- Parameters:
 message- The message that is to be lockedlistenerName- The name of the message listener. This value can be used to distinguish this message consumption from that of a different message listener.- Returns:
 - A unique token that can later be used to release the lock
 
 - 
releaseLock
Releases the lock so that the relevant message can be processed again. We primarily want to use this method when an unexpected error is encountered while processing the message.- Parameters:
 lockToken- The unique token that was provided when the lock was obtained
 - 
purgeLocks
Deprecated.in favor ofpurgeLocks(Duration, Set)Deletes all message locks that are out of date according to themessageLockTtl.- Parameters:
 messageLockTtl- How long the lock should be held. If the lock is too old, then it should be removed.- Throws:
 UnsupportedOperationException- if this is not otherwise implemented.
 - 
purgeLocks
Deletes all message locks that are out of date according to themessageLockTtl. By default, this method always deletes the locks that haveJpaResourceLock.getTypeAlias()equal to "Message".- Parameters:
 messageLockTtl- How long the lock should be held. If the lock is too old, then it should be removed.additionalLockTypes- Additional types of locks to be removed.- Throws:
 UnsupportedOperationException- if this or delegate is not otherwise implemented.
 
 - 
 
purgeLocks(Duration, Set)