Class AbstractPollingEndpoint
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.endpoint.AbstractEndpoint
org.springframework.integration.endpoint.AbstractPollingEndpoint
- All Implemented Interfaces:
Aware,BeanClassLoaderAware,BeanFactoryAware,BeanNameAware,DisposableBean,InitializingBean,ApplicationContextAware,Lifecycle,Phased,SmartLifecycle,ExpressionCapable,NamedComponent,ManageableLifecycle,ManageableSmartLifecycle
- Direct Known Subclasses:
PollingConsumer,SourcePollingChannelAdapter
public abstract class AbstractPollingEndpoint extends AbstractEndpoint implements BeanClassLoaderAware
An
AbstractEndpoint extension for Polling Consumer pattern basics.
The standard polling logic is based on a periodic task scheduling according the provided
Trigger.
When this endpoint is treated as isReactive(), a polling logic is turned into a
Flux.generate(java.util.function.Consumer) and Mono.delay(Duration) combination based on the
SimpleTriggerContext state.- Author:
- Mark Fisher, Oleg Zhurakousky, Gary Russell, Artem Bilan, Andreas Baer
-
Field Summary
Fields Modifier and Type Field Description static longDEFAULT_POLLING_PERIODA default polling period forPeriodicTrigger.Fields inherited from class org.springframework.integration.endpoint.AbstractEndpoint
lifecycleCondition, lifecycleLockFields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger -
Constructor Summary
Constructors Constructor Description AbstractPollingEndpoint() -
Method Summary
Modifier and Type Method Description protected voidapplyReceiveOnlyAdviceChain(Collection<Advice> chain)Add the advice chain to the component that responds toreceiveMessage()calls.protected voiddoStart()Subclasses must implement this method with the start behavior.protected voiddoStop()Subclasses must implement this method with the stop behavior.protected ClassLoadergetBeanClassLoader()MessageChannelgetDefaultErrorChannel()Return the default error channel if the error handler is explicitly provided and it is aMessagePublishingErrorHandler.longgetMaxMessagesPerPoll()protected reactor.core.publisher.Flux<Message<?>>getPollingFlux()protected ObjectgetReceiveMessageSource()protected StringgetResourceKey()Return the key under which the resource will be made available as an attribute on theIntegrationResourceHolder.protected ObjectgetResourceToBind()Return a resource (MessageSource etc) to bind when using transaction synchronization.protected ExecutorgetTaskExecutor()protected abstract voidhandleMessage(Message<?> message)Handle a message.protected booleanisReactive()protected booleanisReceiveOnlyAdvice(Advice advice)Return true if this advice should be applied only to thereceiveMessage()operation rather than the whole poll.protected booleanisSyncExecutor()protected voidonInit()Subclasses may implement this for initialization logic.protected abstract Message<?>receiveMessage()Obtain the next message (if one is available).voidsetAdviceChain(List<Advice> adviceChain)voidsetBeanClassLoader(ClassLoader classLoader)voidsetErrorHandler(ErrorHandler errorHandler)voidsetMaxMessagesPerPoll(long maxMessagesPerPoll)Configure a cap for messages to poll from the source per scheduling cycle.protected voidsetReceiveMessageSource(Object source)voidsetTaskExecutor(Executor taskExecutor)voidsetTransactionSynchronizationFactory(TransactionSynchronizationFactory transactionSynchronizationFactory)voidsetTrigger(Trigger trigger)Methods inherited from class org.springframework.integration.endpoint.AbstractEndpoint
destroy, doStop, getPhase, getRole, isActive, isAutoStartup, isRunning, setAutoStartup, setPhase, setRole, start, stop, stopMethods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getComponentType, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
-
Field Details
-
DEFAULT_POLLING_PERIOD
public static final long DEFAULT_POLLING_PERIODA default polling period forPeriodicTrigger.- See Also:
- Constant Field Values
-
-
Constructor Details
-
AbstractPollingEndpoint
public AbstractPollingEndpoint()
-
-
Method Details
-
setTaskExecutor
-
getTaskExecutor
-
isSyncExecutor
protected boolean isSyncExecutor() -
setTrigger
-
setAdviceChain
-
setMaxMessagesPerPoll
Configure a cap for messages to poll from the source per scheduling cycle. A negative number means retrieve unlimited messages until theMessageSourcereturnsnull. Zero means do not poll for any records - it can be considered as pausing if 'maxMessagesPerPoll' is later changed to a non-zero value. The polling cycle may exit earlier if the source returns null for the current receive call.- Parameters:
maxMessagesPerPoll- the number of message to poll per schedule.
-
getMaxMessagesPerPoll
public long getMaxMessagesPerPoll() -
setErrorHandler
-
setBeanClassLoader
- Specified by:
setBeanClassLoaderin interfaceBeanClassLoaderAware
-
setTransactionSynchronizationFactory
public void setTransactionSynchronizationFactory(TransactionSynchronizationFactory transactionSynchronizationFactory) -
getDefaultErrorChannel
Return the default error channel if the error handler is explicitly provided and it is aMessagePublishingErrorHandler.- Returns:
- the channel or null.
- Since:
- 4.3
-
getBeanClassLoader
-
isReceiveOnlyAdvice
Return true if this advice should be applied only to thereceiveMessage()operation rather than the whole poll.- Parameters:
advice- The advice.- Returns:
- true to only advise the receive operation.
-
applyReceiveOnlyAdviceChain
Add the advice chain to the component that responds toreceiveMessage()calls.- Parameters:
chain- the advice chainCollection.
-
isReactive
protected boolean isReactive() -
getPollingFlux
-
getReceiveMessageSource
-
setReceiveMessageSource
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupportSubclasses may implement this for initialization logic.- Overrides:
onInitin classAbstractEndpoint
-
doStart
protected void doStart()Description copied from class:AbstractEndpointSubclasses must implement this method with the start behavior. This method will be invoked while holding theAbstractEndpoint.lifecycleLock.- Specified by:
doStartin classAbstractEndpoint
-
doStop
protected void doStop()Description copied from class:AbstractEndpointSubclasses must implement this method with the stop behavior. This method will be invoked while holding theAbstractEndpoint.lifecycleLock.- Specified by:
doStopin classAbstractEndpoint
-
receiveMessage
Obtain the next message (if one is available). MAY return null if no message is immediately available.- Returns:
- The message or null.
-
handleMessage
Handle a message.- Parameters:
message- The message.
-
getResourceToBind
Return a resource (MessageSource etc) to bind when using transaction synchronization.- Returns:
- The resource, or null if transaction synchronization is not required.
-
getResourceKey
Return the key under which the resource will be made available as an attribute on theIntegrationResourceHolder. The defaultExpressionEvaluatingTransactionSynchronizationProcessormakes this attribute available as a variable in SpEL expressions.- Returns:
- The key, or null (default) if the resource shouldn't be made available as a attribute.
-