Class RedisQueueMessageDrivenEndpoint
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.endpoint.AbstractEndpoint
org.springframework.integration.endpoint.MessageProducerSupport
org.springframework.integration.redis.inbound.RedisQueueMessageDrivenEndpoint
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,BeanFactoryAware
,BeanNameAware
,DisposableBean
,InitializingBean
,SmartInitializingSingleton
,ApplicationContextAware
,ApplicationEventPublisherAware
,Lifecycle
,Phased
,SmartLifecycle
,ExpressionCapable
,MessageProducer
,IntegrationPattern
,NamedComponent
,ManageableLifecycle
,ManageableSmartLifecycle
,TrackableComponent
@ManagedResource @IntegrationManagedResource public class RedisQueueMessageDrivenEndpoint extends MessageProducerSupport implements ApplicationEventPublisherAware, BeanClassLoaderAware
- Since:
- 3.0
- Author:
- Mark Fisher, Gunnar Hillert, Artem Bilan, Gary Russell, Rainer Frey, Matthias Jeschke
-
Field Summary
Fields Modifier and Type Field Description static long
DEFAULT_RECEIVE_TIMEOUT
static long
DEFAULT_RECOVERY_INTERVAL
Fields inherited from class org.springframework.integration.endpoint.AbstractEndpoint
lifecycleCondition, lifecycleLock
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
-
Constructor Summary
Constructors Constructor Description RedisQueueMessageDrivenEndpoint(String queueName, RedisConnectionFactory connectionFactory)
-
Method Summary
Modifier and Type Method Description void
clearQueue()
Clear the Redis Queue specified byboundListOperations
.protected void
doStart()
Take no action by default.protected void
doStop()
Take no action by default.protected void
doStop(Runnable callback)
Stop the component and invoke callback.String
getComponentType()
Subclasses may implement this method to provide component type information.long
getQueueSize()
Returns the size of the Queue specified byboundListOperations
.boolean
isListening()
protected void
onInit()
Subclasses may implement this for initialization logic.void
setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
void
setBeanClassLoader(ClassLoader beanClassLoader)
void
setExpectMessage(boolean expectMessage)
When data is retrieved from the Redis queue, does the returned data represent just the payload for a Message, or does the data represent a serializedMessage
?.void
setReceiveTimeout(long receiveTimeout)
This timeout (milliseconds) is used when retrieving elements from the queue specified byboundListOperations
.void
setRecoveryInterval(long recoveryInterval)
void
setRightPop(boolean rightPop)
Specify ifPOP
operation from Redis List should beBRPOP
orBLPOP
.void
setSerializer(RedisSerializer<?> serializer)
void
setTaskExecutor(Executor taskExecutor)
Methods inherited from class org.springframework.integration.endpoint.MessageProducerSupport
afterSingletonsInstantiated, buildErrorMessage, getErrorChannel, getErrorMessageAttributes, getIntegrationPatternType, getMessagingTemplate, getOutputChannel, sendErrorMessageIfNecessary, sendMessage, setErrorChannel, setErrorChannelName, setErrorMessageStrategy, setOutputChannel, setOutputChannelName, setSendTimeout, setShouldTrack, subscribeToPublisher
Methods inherited from class org.springframework.integration.endpoint.AbstractEndpoint
destroy, getPhase, getRole, isActive, isAutoStartup, isRunning, setAutoStartup, setPhase, setRole, start, stop, stop
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName, getComponentName
-
Field Details
-
DEFAULT_RECEIVE_TIMEOUT
public static final long DEFAULT_RECEIVE_TIMEOUT- See Also:
- Constant Field Values
-
DEFAULT_RECOVERY_INTERVAL
public static final long DEFAULT_RECOVERY_INTERVAL- See Also:
- Constant Field Values
-
-
Constructor Details
-
RedisQueueMessageDrivenEndpoint
- Parameters:
queueName
- Must not be an empty StringconnectionFactory
- Must not be null
-
-
Method Details
-
setApplicationEventPublisher
- Specified by:
setApplicationEventPublisher
in interfaceApplicationEventPublisherAware
-
setBeanClassLoader
- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
-
setSerializer
-
setExpectMessage
public void setExpectMessage(boolean expectMessage)When data is retrieved from the Redis queue, does the returned data represent just the payload for a Message, or does the data represent a serializedMessage
?.expectMessage
defaults to false. This means the retrieved data will be used as the payload for a new Spring Integration Message. Otherwise, the data is deserialized as Spring Integration Message.- Parameters:
expectMessage
- Defaults to false
-
setReceiveTimeout
public void setReceiveTimeout(long receiveTimeout)This timeout (milliseconds) is used when retrieving elements from the queue specified byboundListOperations
.If the queue does contain elements, the data is retrieved immediately. However, if the queue is empty, the Redis connection is blocked until either an element can be retrieved from the queue or until the specified timeout passes.
A timeout of zero can be used to block indefinitely. If not set explicitly the timeout value will default to
1000
See also: https://redis.io/commands/brpop
- Parameters:
receiveTimeout
- Must be non-negative. Specified in milliseconds.
-
setTaskExecutor
-
setRecoveryInterval
public void setRecoveryInterval(long recoveryInterval) -
setRightPop
public void setRightPop(boolean rightPop)Specify ifPOP
operation from Redis List should beBRPOP
orBLPOP
.- Parameters:
rightPop
- theBRPOP
flag. Defaults totrue
.- Since:
- 4.3
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupport
Subclasses may implement this for initialization logic.- Overrides:
onInit
in classMessageProducerSupport
-
getComponentType
Description copied from class:IntegrationObjectSupport
Subclasses may implement this method to provide component type information.- Specified by:
getComponentType
in interfaceNamedComponent
- Overrides:
getComponentType
in classIntegrationObjectSupport
-
doStart
protected void doStart()Description copied from class:MessageProducerSupport
Take no action by default. Subclasses may override this if they need lifecycle-managed behavior. Protected by 'lifecycleLock'.- Overrides:
doStart
in classMessageProducerSupport
-
doStop
Description copied from class:AbstractEndpoint
Stop the component and invoke callback.- Overrides:
doStop
in classAbstractEndpoint
- Parameters:
callback
- the Runnable to invoke.
-
doStop
protected void doStop()Description copied from class:MessageProducerSupport
Take no action by default. Subclasses may override this if they need lifecycle-managed behavior.- Overrides:
doStop
in classMessageProducerSupport
-
isListening
public boolean isListening() -
getQueueSize
Returns the size of the Queue specified byboundListOperations
. The queue is represented by a Redis list. If the queue does not exist0
is returned. See also https://redis.io/commands/llen- Returns:
- Size of the queue. Never negative.
-
clearQueue
Clear the Redis Queue specified byboundListOperations
.
-