Class AbstractPollingEndpoint
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.endpoint.AbstractEndpoint
org.springframework.integration.endpoint.AbstractPollingEndpoint
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanClassLoaderAware,org.springframework.beans.factory.BeanFactoryAware,org.springframework.beans.factory.BeanNameAware,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.context.ApplicationContextAware,org.springframework.context.Lifecycle,org.springframework.context.Phased,org.springframework.context.SmartLifecycle,ExpressionCapable,NamedComponent,ManageableLifecycle,ManageableSmartLifecycle
- Direct Known Subclasses:
PollingConsumer,SourcePollingChannelAdapter
public abstract class AbstractPollingEndpoint
extends AbstractEndpoint
implements org.springframework.beans.factory.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.-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longA 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, loggerFields inherited from interface org.springframework.context.SmartLifecycle
DEFAULT_PHASE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidapplyReceiveOnlyAdviceChain(Collection<org.aopalliance.aop.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 ClassLoaderorg.springframework.messaging.MessageChannelReturn the default error channel if the error handler is explicitly provided and it is aMessagePublishingErrorHandler.longprotected reactor.core.publisher.Flux<org.springframework.messaging.Message<?>>protected Objectprotected StringReturn the key under which the resource will be made available as an attribute on theIntegrationResourceHolder.protected ObjectReturn a resource (MessageSource etc.) to bind when using transaction synchronization.protected Executorprotected abstract voidhandleMessage(org.springframework.messaging.Message<?> message) Handle a message.protected booleanprotected booleanisReceiveOnlyAdvice(org.aopalliance.aop.Advice advice) Return true if this advice should be applied only to thereceiveMessage()operation rather than the whole poll.protected booleanprotected voidonInit()Subclasses may implement this for initialization logic.protected abstract org.springframework.messaging.Message<?>Obtain the next message (if one is available).voidsetAdviceChain(List<org.aopalliance.aop.Advice> adviceChain) voidsetBeanClassLoader(ClassLoader classLoader) voidsetErrorHandler(org.springframework.util.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(org.springframework.scheduling.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:
-
-
Constructor Details
-
AbstractPollingEndpoint
public AbstractPollingEndpoint()
-
-
Method Details
-
setTaskExecutor
-
getTaskExecutor
-
isSyncExecutor
protected boolean isSyncExecutor() -
setTrigger
public void setTrigger(org.springframework.scheduling.Trigger trigger) -
setAdviceChain
-
setMaxMessagesPerPoll
@ManagedAttribute public void setMaxMessagesPerPoll(long maxMessagesPerPoll) 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
public void setErrorHandler(org.springframework.util.ErrorHandler errorHandler) -
setBeanClassLoader
- Specified by:
setBeanClassLoaderin interfaceorg.springframework.beans.factory.BeanClassLoaderAware
-
setTransactionSynchronizationFactory
public void setTransactionSynchronizationFactory(TransactionSynchronizationFactory transactionSynchronizationFactory) -
getDefaultErrorChannel
public org.springframework.messaging.MessageChannel 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
protected boolean isReceiveOnlyAdvice(org.aopalliance.aop.Advice advice) 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
receiveoperation.
-
applyReceiveOnlyAdviceChain
Add the advice chain to the component that responds toreceiveMessage()calls.- Parameters:
chain- the advice chainCollection.
-
isReactive
protected boolean isReactive() -
getPollingFlux
protected reactor.core.publisher.Flux<org.springframework.messaging.Message<?>> 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
protected abstract org.springframework.messaging.Message<?> receiveMessage()Obtain the next message (if one is available). MAY return null if no message is immediately available.- Returns:
- The message or null.
-
handleMessage
protected abstract void handleMessage(org.springframework.messaging.Message<?> message) 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.
-