Class ReactiveRqueueMessageEnqueuerImpl
- java.lang.Object
-
- com.github.sonus21.rqueue.core.impl.ReactiveRqueueMessageEnqueuerImpl
-
- All Implemented Interfaces:
ReactiveRqueueMessageEnqueuer
public class ReactiveRqueueMessageEnqueuerImpl extends java.lang.Object implements ReactiveRqueueMessageEnqueuer
-
-
Field Summary
Fields Modifier and Type Field Description protected org.springframework.messaging.converter.MessageConverter
messageConverter
protected org.springframework.messaging.MessageHeaders
messageHeaders
protected RqueueMessageTemplate
messageTemplate
protected RqueueConfig
rqueueConfig
protected RqueueMessageMetadataService
rqueueMessageMetadataService
protected RqueueStringDao
rqueueStringDao
-
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
-
Methods inherited from interface com.github.sonus21.rqueue.core.ReactiveRqueueMessageEnqueuer
enqueueAt, enqueueAt, enqueueAt, enqueueAt, enqueueAt, enqueueAt, enqueueAtWithPriority, enqueueAtWithPriority, enqueueAtWithPriority, enqueueAtWithPriority, enqueueAtWithPriority, enqueueAtWithPriority, enqueueIn, enqueueIn, enqueueIn, enqueueIn, enqueueInWithPriority, enqueueInWithPriority, enqueueInWithPriority, enqueueInWithPriority, enqueueInWithPriority, enqueueInWithPriority, enqueuePeriodic, enqueuePeriodic, enqueuePeriodic, enqueuePeriodic, enqueueUniqueAt, enqueueUniqueAtWithPriority, enqueueUniqueInWithPriority, enqueueUniqueWithPriority
-
-
-
-
Field Detail
-
messageHeaders
protected final org.springframework.messaging.MessageHeaders messageHeaders
-
messageConverter
protected org.springframework.messaging.converter.MessageConverter messageConverter
-
messageTemplate
protected RqueueMessageTemplate messageTemplate
-
rqueueStringDao
@Autowired protected RqueueStringDao rqueueStringDao
-
rqueueConfig
@Autowired protected RqueueConfig rqueueConfig
-
rqueueMessageMetadataService
@Autowired protected RqueueMessageMetadataService rqueueMessageMetadataService
-
-
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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- message idmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- the message id for uniquenessmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessage
- 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 usingRqueueListener.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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- 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 usingRqueueListener.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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendpriority
- the priority for this message, like high, low, medium etcmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendpriority
- the priority for this message, like high, low, medium etcmessageId
- the message id for this messagemessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- the message id, using which this message will be identifiedmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- the message id for uniquenessmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessage
- 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 usingRqueueListener.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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- the message identifiermessage
- 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 usingRqueueListener.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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessage
- 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 interfaceReactiveRqueueMessageEnqueuer
- Parameters:
queueName
- on which queue message has to be sendmessageId
- message id corresponding to this messagemessage
- 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)
-
-