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 Detail

      • obtainLock

        String obtainLock​(org.springframework.messaging.Message<?> message,
                          String listenerName)
        Creates a JpaResourceLock based on the contents of the provided Message and listenerName.
        Parameters:
        message - The message that is to be locked
        listenerName - 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

        void releaseLock​(@Nullable
                         String lockToken)
        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

        void purgeLocks​(Duration messageLockTtl)
        Deletes all message locks that are out of date according to the messageLockTtl.
        Parameters:
        messageLockTtl - How long the lock should be held. If the lock is too old, then it should be removed.