Class ReactiveRqueueMessageEnqueuerImpl

    • Constructor Summary

      Constructors 
      Constructor Description
      ReactiveRqueueMessageEnqueuerImpl​(RqueueMessageTemplate messageTemplate, org.springframework.messaging.converter.MessageConverter messageConverter, org.springframework.messaging.MessageHeaders messageHeaders)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object deleteAllMessages​(QueueDetail queueDetail)  
      protected java.lang.Object enqueue​(QueueDetail queueDetail, RqueueMessage rqueueMessage, java.lang.Long delayInMilliSecs, boolean reactive)  
      reactor.core.publisher.Mono<java.lang.String> enqueue​(java.lang.String queueName, java.lang.Object message)
      Enqueue a message on given queue without any delay, consume as soon as possible.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueue​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message)
      Enqueue a message on given queue without any delay, consume as soon as possible.
      reactor.core.publisher.Mono<java.lang.String> enqueueIn​(java.lang.String queueName, java.lang.Object message, long delayInMilliSecs)
      Schedule a message on the given queue with the provided delay.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueueIn​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, long delayInMilliSecs)
      Schedule a message on the given queue with the provided delay.
      reactor.core.publisher.Mono<java.lang.String> enqueueInWithRetry​(java.lang.String queueName, java.lang.Object message, int retryCount, long delayInMilliSecs)
      Enqueue a task that would be scheduled to run in the specified milli seconds.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueueInWithRetry​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, int retryCount, long delayInMilliSecs)
      Enqueue a task that would be scheduled to run in the specified milli seconds.
      reactor.core.publisher.Mono<java.lang.String> enqueuePeriodic​(java.lang.String queueName, java.lang.Object message, long periodInMilliSeconds)
      Enqueue a message on given queue that will be running after a given period.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueuePeriodic​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, long periodInMilliSeconds)
      Enqueue a message on given queue that will be running after a given period.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueueUnique​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message)
      Enqueue unique message on a given queue without any delay, consume as soon as possible.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueueUniqueIn​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, long delayInMillisecond)
      Enqueue a message on given queue with delay, consume as soon as the delayed is expired.
      reactor.core.publisher.Mono<java.lang.String> enqueueWithPriority​(java.lang.String queueName, java.lang.String priority, java.lang.Object message)
      Enqueue a message on given queue, that will be consumed as soon as possible.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueueWithPriority​(java.lang.String queueName, java.lang.String priority, java.lang.String messageId, java.lang.Object message)
      Enqueue a message on given queue, that will be consumed as soon as possible.
      reactor.core.publisher.Mono<java.lang.String> enqueueWithRetry​(java.lang.String queueName, java.lang.Object message, int retryCount)
      Enqueue a message on the given queue with the given retry count.
      reactor.core.publisher.Mono<java.lang.Boolean> enqueueWithRetry​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, int retryCount)
      Enqueue a message on the given queue with the given retry count.
      protected java.lang.String pushMessage​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, java.lang.Integer retryCount, java.lang.Long delayInMilliSecs)  
      protected java.lang.String pushPeriodicMessage​(java.lang.String queueName, java.lang.String messageId, java.lang.Object message, long periodInMilliSeconds)  
      protected void registerQueueInternal​(java.lang.String queueName, java.lang.String... priorities)  
      protected java.lang.Object storeMessageMetadata​(RqueueMessage rqueueMessage, java.lang.Long delayInMillis, boolean reactive)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • messageHeaders

        protected final org.springframework.messaging.MessageHeaders messageHeaders
      • messageConverter

        protected org.springframework.messaging.converter.MessageConverter messageConverter
      • rqueueConfig

        @Autowired
        protected RqueueConfig rqueueConfig
    • Constructor Detail

      • ReactiveRqueueMessageEnqueuerImpl

        public ReactiveRqueueMessageEnqueuerImpl​(RqueueMessageTemplate messageTemplate,
                                                 org.springframework.messaging.converter.MessageConverter messageConverter,
                                                 org.springframework.messaging.MessageHeaders messageHeaders)
    • Method Detail

      • enqueue

        public reactor.core.publisher.Mono<java.lang.String> enqueue​(java.lang.String queueName,
                                                                     java.lang.Object message)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue without any delay, consume as soon as possible.
        Specified by:
        enqueue in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        message - message object it could be any arbitrary object.
        Returns:
        message id on successful enqueue otherwise null.
      • enqueue

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueue​(java.lang.String queueName,
                                                                      java.lang.String messageId,
                                                                      java.lang.Object message)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue without any delay, consume as soon as possible.
        Specified by:
        enqueue in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - message id
        message - message object it could be any arbitrary object.
        Returns:
        message was enqueue successfully or failed.
      • enqueueUnique

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueueUnique​(java.lang.String queueName,
                                                                            java.lang.String messageId,
                                                                            java.lang.Object message)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue unique message on a given queue without any delay, consume as soon as possible.
        Specified by:
        enqueueUnique in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - the message id for uniqueness
        message - message object it could be any arbitrary object.
        Returns:
        message id on successful enqueue otherwise null.
      • enqueueWithRetry

        public reactor.core.publisher.Mono<java.lang.String> enqueueWithRetry​(java.lang.String queueName,
                                                                              java.lang.Object message,
                                                                              int retryCount)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on the given queue with the given retry count. This message would not be consumed more than the specified time due to failure in underlying systems.
        Specified by:
        enqueueWithRetry in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        message - message object it could be any arbitrary object.
        retryCount - how many times a message would be retried, before it can be discarded or send to dead letter queue configured using RqueueListener.numRetries()
        Returns:
        message id on successful enqueue otherwise null.
      • enqueueWithRetry

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueueWithRetry​(java.lang.String queueName,
                                                                               java.lang.String messageId,
                                                                               java.lang.Object message,
                                                                               int retryCount)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on the given queue with the given retry count. This message would not be consumed more than the specified time due to failure in underlying systems.
        Specified by:
        enqueueWithRetry in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - message id for this message.
        message - message object it could be any arbitrary object.
        retryCount - how many times a message would be retried, before it can be discarded or send to dead letter queue configured using RqueueListener.numRetries()
        Returns:
        message was enqueue successfully or failed.
      • enqueueWithPriority

        public reactor.core.publisher.Mono<java.lang.String> enqueueWithPriority​(java.lang.String queueName,
                                                                                 java.lang.String priority,
                                                                                 java.lang.Object message)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue, that will be consumed as soon as possible.
        Specified by:
        enqueueWithPriority in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        priority - the priority for this message, like high, low, medium etc
        message - message object it could be any arbitrary object.
        Returns:
        message id on successful enqueue otherwise null.
      • enqueueWithPriority

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueueWithPriority​(java.lang.String queueName,
                                                                                  java.lang.String priority,
                                                                                  java.lang.String messageId,
                                                                                  java.lang.Object message)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue, that will be consumed as soon as possible.
        Specified by:
        enqueueWithPriority in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        priority - the priority for this message, like high, low, medium etc
        messageId - the message id for this message
        message - message object it could be any arbitrary object.
        Returns:
        message was enqueued successfully or not.
      • enqueueIn

        public reactor.core.publisher.Mono<java.lang.String> enqueueIn​(java.lang.String queueName,
                                                                       java.lang.Object message,
                                                                       long delayInMilliSecs)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Schedule a message on the given queue with the provided delay. It will be available to consume as soon as the delay elapse, for example process in 10 seconds
        Specified by:
        enqueueIn in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        message - message object it could be any arbitrary object.
        delayInMilliSecs - delay in milli seconds
        Returns:
        message id on successful enqueue otherwise null.
      • enqueueIn

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueueIn​(java.lang.String queueName,
                                                                        java.lang.String messageId,
                                                                        java.lang.Object message,
                                                                        long delayInMilliSecs)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Schedule a message on the given queue with the provided delay. It will be available to consume as soon as the delay elapse.
        Specified by:
        enqueueIn in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - the message id, using which this message will be identified
        message - message object it could be any arbitrary object.
        delayInMilliSecs - delay in milli seconds
        Returns:
        message was enqueue successfully or failed.
      • enqueueUniqueIn

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueueUniqueIn​(java.lang.String queueName,
                                                                              java.lang.String messageId,
                                                                              java.lang.Object message,
                                                                              long delayInMillisecond)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue with delay, consume as soon as the delayed is expired.
        Specified by:
        enqueueUniqueIn in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - the message id for uniqueness
        message - message object it could be any arbitrary object.
        delayInMillisecond - total execution delay
        Returns:
        message id on successful enqueue otherwise null.
      • enqueueInWithRetry

        public reactor.core.publisher.Mono<java.lang.String> enqueueInWithRetry​(java.lang.String queueName,
                                                                                java.lang.Object message,
                                                                                int retryCount,
                                                                                long delayInMilliSecs)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a task that would be scheduled to run in the specified milli seconds.
        Specified by:
        enqueueInWithRetry in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        message - message object it could be any arbitrary object.
        retryCount - how many times a message would be retried, before it can be discarded or sent to dead letter queue configured using RqueueListener.numRetries() ()}
        delayInMilliSecs - delay in milli seconds, this message would be only visible to the listener when number of millisecond has elapsed.
        Returns:
        message id on successful enqueue otherwise null
      • enqueueInWithRetry

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueueInWithRetry​(java.lang.String queueName,
                                                                                 java.lang.String messageId,
                                                                                 java.lang.Object message,
                                                                                 int retryCount,
                                                                                 long delayInMilliSecs)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a task that would be scheduled to run in the specified milli seconds.
        Specified by:
        enqueueInWithRetry in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - the message identifier
        message - message object it could be any arbitrary object.
        retryCount - how many times a message would be retried, before it can be discarded or sent to dead letter queue configured using RqueueListener.numRetries() ()}
        delayInMilliSecs - delay in milli seconds, this message would be only visible to the listener when number of millisecond has elapsed.
        Returns:
        message was enqueue successfully or failed.
      • enqueuePeriodic

        public reactor.core.publisher.Mono<java.lang.String> enqueuePeriodic​(java.lang.String queueName,
                                                                             java.lang.Object message,
                                                                             long periodInMilliSeconds)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue that will be running after a given period. It works like periodic cron that's scheduled at certain interval, for example every 30 seconds.
        Specified by:
        enqueuePeriodic in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        message - message object it could be any arbitrary object.
        periodInMilliSeconds - period of this job in milliseconds.
        Returns:
        message id on successful enqueue otherwise null.
      • enqueuePeriodic

        public reactor.core.publisher.Mono<java.lang.Boolean> enqueuePeriodic​(java.lang.String queueName,
                                                                              java.lang.String messageId,
                                                                              java.lang.Object message,
                                                                              long periodInMilliSeconds)
        Description copied from interface: ReactiveRqueueMessageEnqueuer
        Enqueue a message on given queue that will be running after a given period. It works like periodic cron that's scheduled at certain interval, for example every 30 seconds.
        Specified by:
        enqueuePeriodic in interface ReactiveRqueueMessageEnqueuer
        Parameters:
        queueName - on which queue message has to be send
        messageId - message id corresponding to this message
        message - message object it could be any arbitrary object.
        periodInMilliSeconds - period of this job in milliseconds.
        Returns:
        success or failure
      • storeMessageMetadata

        protected java.lang.Object storeMessageMetadata​(RqueueMessage rqueueMessage,
                                                        java.lang.Long delayInMillis,
                                                        boolean reactive)
      • enqueue

        protected java.lang.Object enqueue​(QueueDetail queueDetail,
                                           RqueueMessage rqueueMessage,
                                           java.lang.Long delayInMilliSecs,
                                           boolean reactive)
      • pushMessage

        protected java.lang.String pushMessage​(java.lang.String queueName,
                                               java.lang.String messageId,
                                               java.lang.Object message,
                                               java.lang.Integer retryCount,
                                               java.lang.Long delayInMilliSecs)
      • pushPeriodicMessage

        protected java.lang.String pushPeriodicMessage​(java.lang.String queueName,
                                                       java.lang.String messageId,
                                                       java.lang.Object message,
                                                       long periodInMilliSeconds)
      • deleteAllMessages

        protected java.lang.Object deleteAllMessages​(QueueDetail queueDetail)
      • registerQueueInternal

        protected void registerQueueInternal​(java.lang.String queueName,
                                             java.lang.String... priorities)