Class AbstractPollingEndpoint

java.lang.Object
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 Details

  • Constructor Details

  • Method Details

    • setTaskExecutor

      public void setTaskExecutor​(java.util.concurrent.Executor taskExecutor)
    • getTaskExecutor

      protected java.util.concurrent.Executor getTaskExecutor()
    • isSyncExecutor

      protected boolean isSyncExecutor()
    • setTrigger

      public void setTrigger​(org.springframework.scheduling.Trigger trigger)
    • setAdviceChain

      public void setAdviceChain​(java.util.List<org.aopalliance.aop.Advice> adviceChain)
    • 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 the MessageSource returns null. 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

      public void setBeanClassLoader​(java.lang.ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface org.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 a MessagePublishingErrorHandler.
      Returns:
      the channel or null.
      Since:
      4.3
    • getBeanClassLoader

      protected java.lang.ClassLoader getBeanClassLoader()
    • isReceiveOnlyAdvice

      protected boolean isReceiveOnlyAdvice​(org.aopalliance.aop.Advice advice)
      Return true if this advice should be applied only to the receiveMessage() operation rather than the whole poll.
      Parameters:
      advice - The advice.
      Returns:
      true to only advise the receive operation.
    • applyReceiveOnlyAdviceChain

      protected void applyReceiveOnlyAdviceChain​(java.util.Collection<org.aopalliance.aop.Advice> chain)
      Add the advice chain to the component that responds to receiveMessage() calls.
      Parameters:
      chain - the advice chain Collection.
    • isReactive

      protected boolean isReactive()
    • getPollingFlux

      protected reactor.core.publisher.Flux<org.springframework.messaging.Message<?>> getPollingFlux()
    • getReceiveMessageSource

      protected java.lang.Object getReceiveMessageSource()
    • setReceiveMessageSource

      protected void setReceiveMessageSource​(java.lang.Object source)
    • onInit

      protected void onInit()
      Description copied from class: IntegrationObjectSupport
      Subclasses may implement this for initialization logic.
      Overrides:
      onInit in class AbstractEndpoint
    • doStart

      protected void doStart()
      Description copied from class: AbstractEndpoint
      Subclasses must implement this method with the start behavior. This method will be invoked while holding the AbstractEndpoint.lifecycleLock.
      Specified by:
      doStart in class AbstractEndpoint
    • doStop

      protected void doStop()
      Description copied from class: AbstractEndpoint
      Subclasses must implement this method with the stop behavior. This method will be invoked while holding the AbstractEndpoint.lifecycleLock.
      Specified by:
      doStop in class AbstractEndpoint
    • 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

      protected java.lang.Object getResourceToBind()
      Return a resource (MessageSource etc) to bind when using transaction synchronization.
      Returns:
      The resource, or null if transaction synchronization is not required.
    • getResourceKey

      protected java.lang.String getResourceKey()
      Return the key under which the resource will be made available as an attribute on the IntegrationResourceHolder. The default ExpressionEvaluatingTransactionSynchronizationProcessor makes 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.